+ JavaScript の質問用スレッド vol.36 +
━━━━━JavaScript質問スレ道場訓━━━━━
一、礼節を重んじ常に努力精進すること
一、ブラクラに打ち勝つ精神力を持つこと
一、心身の優れたJavaScriptを学ぶこと
一、雑草の如く生涯JavaScriptを貫くこと
一、感謝と反省を忘れないこと
以上
━━━━━━━━━━━━━━━━━━━━━━
このスレに書き込むことが許されるものは以下のとおり
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・FAQ・過去ログや関連資料を読むことができる者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
(質問時、回答時にはなるべく対象環境を明記しよう)
前スレ
http://pc8.2ch.net/test/read.cgi/hp/1110578338/l50 まとめサイト
http://web2ch.s31.xrea.com:8080/?JS FAQ・注意
>>1-5、過去ログ・関連資料・関連スレ
>>1-50またはまとめサイト
【質問を書く上で】
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。
答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
長い(1レスに入らない)場合はアップロードしてURIを貼る。
3)初心者という言葉は危険なので使わない方がよい。
初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
ただ「動きません」「エラーです」は何も情報がないため嫌われる。
エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
5)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。
例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、
ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け!
6)質問はまっとうな(他人に理解できる)日本語で。
前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQ】
Q1. 開いた別窓/フレームの内容にアクセスできないのですが…
A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。
Q2. JavaScriptでローカルファイルを読み/書きたいのですが…
A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに…
Q3. document.write(...)でページ内容を追加したいのですが…
A3. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。
部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、
(2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。
innerHTMLは非標準ですがIE、Opera、Gecko(N6/N7/Moz等)で対応済。
Q4. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが…
A4. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるしかない。
Q5. Aタグのonclickで動作指定してるのですが時々動きません…
A5. 「onclick="...;return false"」としないとページ移動しちゃうから。
Q6. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが…
A6. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。
Q7. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A7. 「document.forms.myform.elements[変数名].value」でどぞ。
JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
例:「obj.p0=obj.p1=...=obj.p8=0;」⇔「for(i=0;i<9;i++) obj['p'+i]=0;」。
Q8. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A8. IEではe.currentStyle、Geckoではwindow.getComputedStyle()を使います。
Q9. 100*1.15の結果が114.999…998となってしまうのですが…
A9. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。
Q10. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが…
A10. Geckoのnew XMLHttpRequest()、IEのnew ActiveXObject("Microsoft.XMLHTTP")
を使えばできる。古いブラウザだと隠しフレームに読むなどのワザが必要。
うは…貼り終って
>>1が変わってることに気づいた… ○| ̄|_スマソ
この script を Safari 対応にしたいです。
ttp://www.twinhelix.com/dhtml/tipster/ "online demonstration" のリンクをたどるとデモが見られますけど、
Safari だと、ページをスクロールさせると、ポップアップの位置がおかしくなります。
あれこれポップアップ のソースと見比べながらやってるんですけど、
いまいちよくわかりません。誰かわかる人いますか?
よろしくお願いします。
>>12 そのぐっちゃぐちゃなソースを直す気にはならないので概要だけ。
縦スクロール位置を取得するメソッドscrollYの中でIE用とその他
用を枝分かれさせてるけど、Safariの場合枝分かれの行く方向が
違うんじゃないかな。しかしこのスクリプトのブラウザ判別が
どういう分類でフラグ立てているのかまで読んでないのでどう
直せばいいかまでは助言できません。
15 :
Name_Not_Found:2005/04/30(土) 12:58:53 ID:Ox/LXVTy
現在、プルダウンメニュー2個を使って、
2都市間の距離を表示する仕組みを考え中です。
作りたい動作としては(東京と名古屋の場合)…
プルダウンメニュー(その1)で「出発地(東京)」を選択、
プルダウンメニュー(その2)で「目的地(名古屋)」を選択して、
「計算」ボタンを押すと、テキストエリアに「2都市間距離(例えば100km)」と表示されて、
「クリア」ボタンを押すと、テキストエリアが空っぽに戻る…といった感じです。
解説本を買ってきたり、過去スレ見て作っているけど
ピクリとも動かない…し、何が悪いかわからない。
現段階のものを誰かに見てもらって、
何か教えてもらえたらと思いまして…。
いったい、何がいけないんでしょうか…?全部?……涙
長いので貼ります。
http://www.uploda.org/file/uporg85814.txt
>>15 この「Var」ってのは何さ。JavaScriptなどのプログラミング言語
では勝手に大文字小文字を変えてはいけない。だいたいがこういう
のだと構文エラー出てるはずだけどエラー見てないのかよ。
>>15 >>16が言うようにVarではなくvar
それと } の後ろにセミコロンはいらない
18 :
15:2005/04/30(土) 13:26:16 ID:Ox/LXVTy
>>16 !!!!!
小文字にしたら動いた!!!!!
ありがとう!!!
すごい嬉しい!!!
生まれて初めて作ったjavascriptが動いた!!!!
本当にありがとう!!!!
こんなところに問題があったなんて…。
でも、嬉しい!!!こんなミスだけで、他がなんとか組めていたことが嬉しい!!!
マジでありがとうございました。
19 :
15:2005/04/30(土) 13:27:58 ID:Ox/LXVTy
>>17 ありがとう。
そのセミコロンの付け位置すらもわかっていなかったので…。
これからさらに勉強しますわ!!!
21 :
15:2005/04/30(土) 13:49:59 ID:Ox/LXVTy
>>16 >>17 >>20 お恥ずかしながら、
エラーがブラウザの設定で出せることすら知らず…
いま、「構文エラー」の出し方を調べてきました。
また、かしこくなれました。
ありがとうございます。ほんとに。
22 :
Name_Not_Found:2005/04/30(土) 14:11:51 ID:KMU0ShKx
フレームを使用したサイトで、
メニュー(A)とコンテンツ(B)の2つのフレームに分割してあります。
Aのアンカータグの記述を <a taget="B" href="***.html"> としてありますが
このリンクをクリックしてBに新たなページが表示された際に、フレームBを
アクティブにする方法はあるでしょうか?
これはBのページが縦に長い場合に、キーボード操作でのスクロールが
しやすいようにするためです。
BのページのbodyタグにonLoadを使用すればできそうだ、というところまでは調べましたが、その先がわかりません。
別窓関連の質問で恐縮ですが…
ttp://forum.nifty.com/fhpg/utility/script/s0044.htm ↑こちらの 『画像ぴったりに小窓を開く』 というJavaScriptを弄っているのですが
後になって画像ぴったりではなく右辺が少しと下辺がかなりはみ出ている事に気付きました
※onClickで現れる新規小窓がリサイズ可能なのでウィンドウサイズを広げて確認できます
どうやら 画像サイズ=タイトルバーとウィンドウのフチ幅を含んだサイズ になっている?
marginの類を入れても反映されないのですが、そもそもそれでIEのバーの幅に合わせても
他のブラウザでは幅が違うのでうまくいきません(FireFoxだとスクロールバーまで出ました)
画像サイズ=ウィンドウ全体サイズ ではなく =ドキュメント内サイズ にする方法、
若しくはhtmlを個別に作成せずに画像ファイルへのリンクで同様の動作をする記述法
お尋ねしたいのです よろしくお願い致します
>>22 「<body onload="window.focus()">」で駄目なの?前スレにあったよな…
>>23 ・ Popup Window (別窓) は嫌われる.
鬱陶しいからフィルタリングしている人が多い.
そうなると見てもらうことすらおぼつかなくなる.
・ "〜にぴったり" 何てことを考えても意味はない.
なぜなら, web-browser ごとにレンダリングのクセがあるから.
"あちら立てばこちら立たず" になるのが関の山.
このような ことに こだわっている ひまがあれば,
心配りすることが別にあるはずだ.
解決策としては
1. 画像そのものを見えなくしておく.
(style="display:none")
2. どこかをクリックした時に表示されるようにする.
(style.display='inline')
3. 用済みの画像は再び隠せるようにする.
(style.display='none')
>>23 ホレ。スクロールバーのせいか小さい側からだと計算が合わない。
ちょっと広くしてから合わせる必要があるようだ… (最終サイズも少し
余裕を見ないとスクロールバーが出てしまう…)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg(gw, gh) {
var w = document.documentElement.clientWidth;
var h = document.documentElement.clientHeight;
window.resizeBy(gw-w, gh-h);
}
</script>
</head><body style="margin:0px;padding:0px"
onload="chg(628,428);setTimeout(function(){chg(604,404);},500)">
<div><img src="t.gif" alt="test"></div></body></html>
27 :
23:2005/04/30(土) 16:31:30 ID:???
>25
嫌われると言われてしまうと言葉を返せないのですが…管理側の我侭というか
この時代に珍しい細い回線環境なので別窓で開いておく〜という動作も嫌悪抱かなくて;
これまでの更新作業効率も考えてこのような仕様を考えました 他に拘っている理由は
著作表示をタイトルバーに出せる(TITLEを任意の文字に可変できる)という部分です
自作画像のサイトの為htmlを用いない場合この方法で著作表示できれば助かるのです
一般論は理解しているのですが変に拘る癖が…とにかくアドバイスどうも有難うございます!
>26
これはお手数お掛けしました…!
でも申し訳無い事に こちらの言葉が足りずに意図の食い違いが起こってしまったようです
リストを置くhtmlから画像ファイルにリンクしてJavaScriptでドキュメントを書き出し新規窓表示、
画像を読み込んで自動リサイズ〜その他諸々の条件〜という動作にしたくて…スイマセン
>23に追記すると
画像ぴったりの小窓を開く(document.で書き出す)JavaScriptは見つかるんですが
・他のリンクを開いても同ウィンドウで開いたりフォーカスを失ったりしない というのと
・タイトル部に任意の文字列を指定できる という部分を重視しています
・外部CSSも組み込めれば理想なのですが…(>23のサンプルではこれらができていました)
ttp://mugi.cc/js/000307.htm こちらのJavaScriptを改変してできないかと奮闘中です
28 :
23:2005/04/30(土) 16:54:34 ID:???
更に追記です 分かり難くてすいません
要は画像ごとのhtmlを個別に作らずに 更にいちいちユーザー側が窓サイズを指定せずに
リンク先の画像ぴったりのウィンドウにリサイズしてくれるhtmlを自動書き出ししてくれるスクリプト
です、>23のスクリプトで殆ど条件は満たされているのですが ウィンドウサイズが合わなくて…
>27 の・タイトル部〜 とか ・外部CSS〜 というのは
JavaScriptで新規表示したウィンドウに適用したい統一条件です
(全てのページがJavaScript部で指定した同一タイトルになる)
>>27-28 だから
>>23 のスクリプトと
>>26 を組み合わせるんでしょ。
そもそも当初の質問は「枠の幅を勘案してぴったりにするには」
だったんだからね。組み合わせるくらい自分でやらなくちゃ。
洩れはやらないからね。
30 :
Name_Not_Found:2005/04/30(土) 17:55:00 ID:VSmMI0UG
すみません、数値を2進数で書くにはどうしたらいいのでしょうか
いまのところ、文字列として2進数を書いて、それを parseInt(文字列, 2)で数値化しているのですが
8進数で先頭に 0 、 16進数で先頭に 0x をつけるのと同様にして表せないのでしょうか?
表せない。
>>30 できない。そもそも2進数でリテラル(定数)の書ける言語って
PL/Iしか知らん。parseInt()で十分じゃん。
33 :
30:2005/04/30(土) 18:12:51 ID:VSmMI0UG
ありがとうございました
脳内変換かparseInt()でがんばります
>>27 う〜ん, 今時 dial-up (or ISDIN)の人が居るとは...
しかし, そういう環境の人に気配りするのなら,
クリック回数を少なくする配慮が必要だろう.
いっそのこと画像を使うのをやめたほうが良いかもしれない.
>著作表示をタイトルバーに出せる
titel は bookmark にも使われる.
bookmark の title に著作表示が長々と入るなんて, 邪道.
JavaScript でソースを書き出すにしても許せん !
どうしてもやりたいのなら, ご自分で苦労して書き上げるべし.
>29
はい、すいません 助言どうも有難うございます
document.writeln()内に更にスクリプトを入れる形になるんですね?
組み合わせてみたんですが新規画面に画像が表示されなくなったり奮闘中です
>34
またまた意見感謝です 画像使うなと言われても 画像メインなもので…
しかし膨大な量の画像を置いたりする訳では無く リストにはサムネイルを置くので
不要なクリックは避けられると思います bookmarkは…別窓画像にブックマーク!?浅はかでした…
著作表示はサイト名くらいでとても短いのですが 邪道ですか; Altで入れた方が良ですかね
素人の妙な拘りですいません、為になる意見本当にどうも有難うございました!
いちいちnullに応答しないでホスイ。このスレの「無視すべき人物」という
ことになっている。半可通な(そしてピント外れな)回答で有名。
>>36 レスアンカーを書かないのは連鎖あぼーんされたくないからでしょうか。
くだらないことをレスしないで欲しい。ウザイです。
>>35 <head>
<style type="text/css"><!--
.thumb{width:87px;height:63px;};
#tgt0{width:290px;height:210px;display:none;};
--></style>
<script type="text/javascript"><!--
cpy='copyright string';
function init(){
tgt=document.getElementById('tgt0');
}
function show(x){
tgt.src=x.src;
tgt.title=cpy;
tgt.style.display='inline';
}
function hide(x){
x.style.display='none';
}
//--></script>
</head>
<bodyonload="init()">
<img alt="img 1" onclick="show(this)" src="../***/***1.png" class="thumb">
<img alt="img 2" onclick="show(this)" src="../***/***2.png" class="thumb">
<img alt="img 3" onclick="show(this)" src="../***/***3.png" class="thumb">
<p>
<img alt="target" onclick="hide(this)" src="dmm.png" id="tgt0">
</p>
</body>
>>35 これは以前あった質問のために書いた擬似 thumb-nail script.
thumb-nail の部分は単に縮小表示しているに過ぎない.
そのため, 画像の数が多くなるとレスポンスの低下が心配になる.
その代わり, 表示画像を増やす時に script に変更の必要がなく,
単に themb-nail の記述を繰り返すだけで良いのが特徴.
なお, copyright は title attribute に表示させるようにしている.
この部分を変更すれば画像の alt を補足的に表示させることも可能.
40 :
35:2005/04/30(土) 20:53:02 ID:???
>36
nullとは◆q7u/null4Uさんの事ですか?(普段からの住人ではないので…
意見を頂いている身としてはそんな訳にはいかないし 別の切り口からの意見は参考になりますよ
>38
わあ…態々どうもです 動作結果を拝見させて頂きました
ただ実はデザインにも考えがあって 既にフォーマットも完成しているので
このスクリプトはまたの機会に使わせて頂こうと思います…色々有難うございました!
あと一息の所は自力で これから集中してやってみようと思います!
42 :
Name_Not_Found:2005/04/30(土) 21:10:09 ID:VSmMI0UG
申し訳ないんですがまた質問させてください
ある id のエレメントのテキストの色を、そのエレメントの背景色を反転させた色にしようとして
document.getElementById( id ).style.color = 0xFFFFFF ^ document.getElementById( id ).style.backgroundColor;
このように書いたのですが、実行してみると背景色が何色かに関わらず、常にテキストの色が白になってしまいます
どのようにすれば、背景色に応じて、それを反転させた色をテキストの色にすることができるのでしょうか?
>>42 backgroundColorは"#HHHHHH"の形式の文字列でしょうが
0.3 + 0.6 の結果が 0.9 にならず 0.8999999999999999 になるんですが
これは何か原因があるんでしょうか?
参考までにalert(0.3 + 0.6)とやってみると確認ができると思います
>>42 backgroundColorは"#FF0000"と返すブラウザもあるし。
"rgb(255,0,0)"を返すブラウザもある。色名で指定されてればそのまま色名を返すブラウザもあった希ガス。
あと、styleはDOM2仕様によればインラインで明示的に指定してないと使えないぞ。
IEならcurrentStyleとか、DOM2ならgetComputedStyleとかが確実。
46 :
Name_Not_Found:2005/04/30(土) 21:34:48 ID:VSmMI0UG
>>43 >>45 ありがとうございます
確認してみたらIE6は"#HHHHHH"の形式で値を返してきました
なので、
document.getElementById( id ).style.color = parseInt(0xFFFFFF ^ document.getElementById( id ).style.backgroundColor.substring(1,6), 16);
これで解決しました
rgb()で返すブラウザにも対応できるようにがんばってみます
47 :
22:2005/04/30(土) 21:38:45 ID:KMU0ShKx
>>24 ありがとうございます。できました。
でもコンテンツブロックの警告が出てしまいますが・・・・・。
>>48 指摘ども。やっぱ仕様の問題でしたか・・・
>>47 window.focus()がブロックされるんだとあんまりしょうもないような…
Aのリンクタグ側に「onclick="parent.frames.B.focus()"」ではどう?
それもだめなら「onclick="window.blur()"」では?
52 :
22:2005/04/30(土) 23:25:35 ID:KMU0ShKx
>>50 どちらも、フレームAを読み込んだ時点で警告が出てしまいました。
>>52 本当に読み込んだ時点?クリックした時点じゃなくて?
読み込んだ時点でチェックするとはあまり思えないが…
>>50 window.top.フレーム名.focus() じゃないか?
単にリンク先が別サーバなんじゃねーの?
56 :
22:2005/05/01(日) 02:58:17 ID:J18VyGkH
>>53 onClick で記述していますが、クリック時ではなく
読み込んだ時点でセキュリティ警告が出てしまいます。
>>55 リンク先はリンク元と同じサーバです。
相対アドレスで記述し、ローカルで試しています。
>>54 トップにある兄弟フレーム(と読んだけど)ならどっちでも同じだよね。
>>56 うーん、それは不思議だけど、じゃあ
「onclick="eval('parent.frames.B.for' + 'cus()')"」
とか分けたら回避できたりしないかな?
ローカルなら、IEで常時セキュリティ警告でるのは当たり前。気にスンナ。
>>56 なんだローカルかよ。アップロードして試せ。
60 :
22:2005/05/01(日) 14:41:59 ID:J18VyGkH
すんません、ローカルだと警告が出るって知りませんでした。お騒がせいたしました。
色々と方法を教えて下さってありがとうございます。
質問はageてよいがあとはsage進行でね。
62 :
Name_Not_Found:2005/05/01(日) 16:21:05 ID:QqwFqYn7
jsファイルを単体実行すると指定したウェブページのソースをファイル出力する方法を教えてください
63 :
Name_Not_Found:2005/05/01(日) 16:23:26 ID:k85IL/gu
教えてください。
<html><body>
<iframe src="bbb.htm" width=80 height=80></iframe>
</body><html>
で、bbb.htmが160x160程度の大きさだったら、iframeにはスクロールバーが表示されて、表示位置をjavaScriptのscrollTo()で制御できるのですが、この方法だとファイルが余計に増えてしまいます。
そこで、ファイル数を増やさないように
<html><body>
<div style="overflow:scroll;width:80px;height:80px;">(bbb.htmの内容)</div>
</body></html>
を考えてみたのですが、これだとスクロールバーが出るところまでは同じですが、どうもscrollToで制御できないようです。
うまいことdiv内部のスクロールバーを制御できないでしょうか。
(・∀・)
67 :
Name_Not_Found:2005/05/01(日) 20:24:51 ID:QqwFqYn7
そうです、WSHを使うんです。
samurize用のスクリプトを作ってるんです。
XMLHttpRequestとFileSystemObjectを組み合わせるとか。
>>62 えーと、これじゃ駄目? js単体ではないけど。
今試したら出来た訳だが。
<input type=button onClick="location.href='view-source:
http://hogehoge.com/'" value="ソース表示">
JavaScript:document.body.innerHTML=document.body.innerHTML.replace(/ほげ子/g,'ほげ美');focus();
を外部jsファイルで実行可能にできないでしょうか?
html本体を編集せずに文中の「ほげ子」を「ほげ美」等に変えたいのですが。
72 :
Name_Not_Found:2005/05/02(月) 04:12:56 ID:eOLmD/PK
JSは基本EUC-JPで書くと思いますが
ページ自体のコードがS-JISの時はどうしてますか?
基本...か?
<script charset="...
AddType "...
>>70 外部JSであっても<script></script>の箇所で実行されてしまう
のでまだbodyが完成していない。それを避けるには
「document.body.onload = function() { document.body.innerHTML = ...; };」
とする。HTML側でbodyのonloadを使っている場合はもうちょっと
手当てが必要。
ブラウザのステータスバーにリンク先のアドレスが出ないようにしたいんですが、
・スクロールは使わない
・onMouseOverやonMouseOutは使わないで、統一して設定したい
な方法はありますか?あったら教えてください
IE6,xpSP2です
76 :
75:2005/05/02(月) 15:31:09 ID:T8u4RwrD
age忘れ
78 :
75:2005/05/02(月) 15:39:20 ID:???
>>77 .cgiの場所を隠したいからです。
onMouseで1つ1つやろうにも、数が多すぎで、面倒なんで、
まとめてやる方法はないかなあと。
>>75 やめとけ。ユーザの邪魔をするサイト作ったってウザがられるだけ。
姑息な手段で情報を隠蔽しようとする人がいるね。
ユーザーなんて邪魔なんだよ
83 :
75:2005/05/02(月) 17:13:58 ID:???
リンク先をすべて隠そうとしているわけではありません。
ただ、cgiの場所が分かってしまうと、管理画面用のパスワードが
ばれちゃって荒らしの原因になってしまうからです
というかばれて今cgiはすべて休止してるんで。
>>79アリ、cssで調べてみます
>>83 だからさあ、そんな隠し方、ソース見られたら一発でばれるってば。
その程度で荒らしが防げると思うなら大甘すぎだろ。そうじゃなくて
「管理画面用のパスワード」を「CGIの場所+名前(の一部)」にすれ。
そうすればソース見られようが何だろうがばれないから。そうする
場合のJavaScriptの質問ならすぐ答えてもらえると思うがね。
> ただ、cgiの場所が分かってしまうと、管理画面用のパスワードが
> ばれちゃって荒らしの原因になってしまうからです
理解できん。バレないようにパスワードファイルを置けば済むだろ。
おまけにソース見られたらcgiの在処はわかる。
>ステータスバーにリンク先のアドレスが出ない
アダルトサイトみたいだなw
87 :
75:2005/05/02(月) 17:38:38 ID:???
厨の質問にいろいろ答えてくださりアリです
いろいろ勉強しなおしてきます
89 :
Name_Not_Found:2005/05/02(月) 20:25:11 ID:v+NPZSTR
javascriptでドキュメントの文字コードを取得したいんですが
document.charset では取得できないみたいなんです。
どなたかおたすけを〜
よしきた!
ちゃちゃっと答えちゃうよ
↓答え
│
└─────────────────┐
おらっしゃあぁぁ!!! ∧_∧ |
∩∧ ∧ ( ・∀・) ..|
ヽ( ゚Д゚) (( ( ヽ ノ ) .|
\⊂\ ノ\(○ ゴッ |
O-、 )〜 (_ノ(_\ ∧.|
∪ .= ()二) < >────────────────────────────→アク禁
(冫、)プスプスプス
95 :
Name_Not_Found:2005/05/02(月) 21:13:47 ID:7/VuR2Ti
Webサイト制作初心者用質問スレから来た者です。
Select要素で、「その他」みたいな項目を選ぶと、
近くの1行テキストボックスが入力可能になる、
みたいなフォームを作りたいのですが、
そういうソースがあるサイトとか知りませんか?
>>95 試してないけど、こんな感じでいけるんじゃない?
<form action="">
<select name=xxx onchange="this.form.elements['yyy'].disabled = this.selectedIndex != 2;">
<option>0</option>
<option>1</option>
<option>その他</option>
</select>
<input type=text name=yyy disabled>
</form>
くだらない質問なんだけど、onClickとonclickどっちが好ましいの?
98 :
95:2005/05/02(月) 22:04:02 ID:7/VuR2Ti
>>96 上手く動いています。ありがとうございます!
>>97 doctype による.
(XHTML で onClick と書くと HTML-lint で警告される )
HTML-lintを論拠にするのはどうかと。
>>100 んじゃ,
'onClick' は attribute として扱われる.
XHTML では, それらを小文字で書く決まりになっている.
しかし, HTML4.01 では, 大文字小文字の区別は一応, ない事になっている.
ってことじゃだめ ?
- 普通は DTD を論拠にする。
- Another HTML Lint は DTD に忠実であるよう努力されていて、
自称マークアップ上級者ていどでは、バグ報告すらままならないほど、出来が良い。
→ 大文字小文字程度の問題なら、Another HTML Lint を論拠にしても、何の弊害も無い。
>>89 [Firefox] document.actualEncoding
104 :
97:2005/05/02(月) 23:00:08 ID:???
色々レスありがとうございます。
大体分かったんで、あとは自分で判断します。失礼しますた。
105 :
89:2005/05/02(月) 23:31:54 ID:???
>>103 ありがとうございます。
FirefoxやMozillaではその方法で取得できるみたいですね。
document.charsetはIEのみのようです。
Operaでは無理なのかな・・
最初に環境書くの忘れてごめんなさい。
javascを別ファイルにしたいのですが、拡張子js の作り方がわかりません。
どのようにすればよいのでしょうか?
>>106 基本的に .css と似たようなもの.
(<script>〜</script> 以外を普通に書くだけ)
特に難しいことはないから, 試して納得するのが一番.
function otona() {
// ここに書き込む
}
こんなんで良かと
>
>>107 有り難うございます。
しかし、その.CSSの作り方もわかりません。
お教えください。
お願いします。
>>107 おまえ、そのトリップに何の意味があるんだ?目障りなやつだな。
>>102 HTML Lintは単なるツールであって
「DTD に忠実であるよう努力されて」いたとしても
論拠にすべきものではないよ。
論拠として引用するなら仕様書(に含まれるDTD)か、UIの実装仕様でしょ。
>>109 <head>
<style><!--
body{
background-color:#******;
color:#******;
}
--></style>
<script><!--
function f(){
alert('success!');
}
//--></script>
</head>
上記の記述を外部ファイル化すると...
<!--外部 CSS ファイル-->
body{
background-color:#******;
color:#******;
}
<!--外部 CSS ファイル-->
<!--外部 jsファイル-->
function f(){
alert('success!');
}
<!--外部 jsファイル-->
・ それぞれ, file-name を ***.css, ***.js とするのが注意点.
念のため...
<!--外部 CSS ファイル-->
とかを書き込む必要はない.
・ C を少しでもかじったことがあると, どちらも理解しやすい.
これで君もモテモテだヨ
選択した選択肢によって項目の有効/無効を切り替えるフォームをつくっています。
Q.好きな色は?
◯青系 ◯赤系 ◯緑系
□水色 □空色 □紺色 □フレンチブルー
□ピンク □イタリアンレッド
□黄緑色 □緑色 □深緑色
選択した◯(radio)によって選択可能な□(checkbox)を切り替えたく
function ChangeColor(){
if(document.f.rdo[0].checked == true) {
document.f.chk[0].disabled = false; ・・・略
<form method="" action="*.php" name="f">
<input type="radio" name="rdo" value="1" onClick="ChangeColor()">青系 ・・・略
<input type="checkbox" name="chk" value="1" disabled>水色 ・・・略
とすると、意図する動作ができそうなのはわかりました。
しかしcheckboxの複数選択項目を送信先PHPで配列として取得する都合上(name属性を)
<input type="checkbox" name="chk[]" value="1" disabled>水色 ・・・
と『[]』を付加して全て統一する必要があります。するとJavaScriptは
document.f.chk[][0].disabled = false;
のような事になると思うのですが、案の定エラーで『[]』をURLエンコードしても
バックスラッシュでエスケープしてもダメで、さらにname属性では各項目を区別できません。
nameではなくid属性値や他の要素等で特定できないでしょうか?
>>117 基本的に書き方が間違ってる。
document.forms["f"].elements["chk[]"] と書くべき。
ループを回して value や id を見てもいいけど class 属性で分類した方が
簡単にできると思う。
サンプルは完全一致にしてるけど、正規表現を使えば応用可能。
function ChangeColor(s) {
var x, i;
x = document.forms["f"].elements;
for (i = 0; i < x.length; i++)
if (x[i].type == "checkbox" && x[i].name == "chk[]")
x[i].disabled = x[i].className != s;
}
<input type=radio name=rdo value=1 onclick="ChangeColor('blue');">青系
<input type=checkbox name="chk[]" value=1 class=blue>水色
>>118,119
117です。レスありがとうございます。
書く前にFAQを見て、elements[変数名]は試していたのですが
うまくできなかったのでこのままやってました。
もう一度やりなおしてみます。
className!こういうのがあったのですね。
ありがとうございました。
117です。elements[変数名]がうまくできなかったのは
elements["chk[]"][0]と書くべきところをelements["chk[]"]とかelements["chk[][0]"]としていたためでした。orz
119さんが書いてくれた関数をちょっと改造し
function ChangeColor(s){
var x,i;
x = document.forms["f"].elements["chk[]"];
for (i=0; i<x.length; i++) {
x[i].disabled = x[i].className != s;
}
}
で動作確認できました。
これでPHPでの処理を保ちながらやりたい事が実現できます。
(やっと先に進めます。。。)本当にありがとうございました。
>>112 AHLにXHTMLの属性値の大文字小文字を区別しなかった時期などない。
論拠にすべきではなくても、この問題に関しては、論拠に出来てしまう。
DTDを読み書きできない者にとって便利なものであるのは間違い無い。
しかし、うぇぶ板にはどうしてこんなに文盲が多いのでしょうかねえ。
同じ内容を言い換えて何度も書かなきゃ通じない。
たぶん、これでも通じないでしょうねえ。
123 :
122:2005/05/04(水) 00:49:08 ID:???
× 属性値
○ 属性名
124 :
Name_Not_Found:2005/05/04(水) 03:11:20 ID:WEGAIV2Z
質問です。
それまで動いていたjavascriptが.swfファイルを配置した途端動かなくなりました。
これは避けられないのでしょうか?
普通に配置しているのはすなのですが。
ちなみにスクリプトはリンク部分にマウスオーバーさせると小さい小窓がでて
説明文みたいな形が出るものです。
onMouseOver="chgTxt(0)" onMouseOut="hideHelp()" こんな感じなのですが・・・。
>>124 単にfocusがswfに言っているからでは?
ページの適当な場所でクリックするなりしてから
そのonmouseoverのイベントをチェックしてみては?
質問させてください。
ファイル名Arrayの繰り返し処理で、fnameにピリオドが含まれないときはnextで処理を飛ばしたいです。
下のように書きましたがエラーになります。間違っている箇所を教えてください。
for(i=0;i<fname.length;i++){
next if(fname[i] !~ m/\./);
処理;
}
>>126 for (i = 0; i < fname.length; i++) {
if (! /\./.test(fname[i])) // もしくは if (fname[i].search(/\./) < 0)
continue;
処理;
}
>>126 :::::::::::/ ヽ::::::::::::
:::::::::::| ば じ き i::::::::::::
:::::::::::.ゝ か つ み ノ:::::::::::
:::::::::::/ だ に は イ:::::::::::::
::::: | な。 ゙i ::::::
\_ ,,-'
――--、..,ヽ__ _,,-''
:::::::,-‐、,‐、ヽ. )ノ _,,...-
:::::_|/ 。|。ヽ|-i、 ∠_:::::::::
/. ` ' ● ' ニ 、 ,-、ヽ|:::::::::
ニ __l___ノ |・ | |, -、::
/ ̄ _ | i ゚r ー' 6 |::
|( ̄`' )/ / ,.. i '-
`ー---―' / '(__ ) ヽ 、
====( i)==::::/ ,/ニニニ
:/ ヽ:::i /;;;;;;;;;;;;;;;;
>>127 なるほど、そうやるのですね。ありがとうございました!
>>128 Javascriptのnextでぐぐっても見つからないと思ったら、nextは無いんですね・・・ばかでしたorz
あげ
>>126 はPerlそのままじゃん。PerlとJSはまったく別の言語なんで、
基本から勉強してくらはい。ちなみにPerlでいうnextはJSではcontinue
だが、CでもC++でもJavaでもcontinue。Perlは少数派。
next; last;
漏れもついつい打ってたりするな、elsif とかも。
134 :
Name_Not_Found:2005/05/06(金) 02:39:23 ID:M+JXIih0
ジャバスクリプトでスタイルシート的なのを作った方が、レイアウト崩れませんね
ホムペ制作開始してから1ヵ月も経って、ようやく気付いたよ・・・orz
釣り? JSSS?
それがアゲてまで言いたいことなのかと小一時間(ry
137 :
Name_Not_Found:2005/05/06(金) 03:15:01 ID:CtoHl5R7
138 :
Name_Not_Found:2005/05/06(金) 03:30:39 ID:ZuP2elDF
ほんとにFAQ
>>3の中でどれが該当するかわからない?
どれだと思う? 1/10の確立で当たるから適当に言ってみたら?
っていうかそれだと<img name="pic" ...>があったときにどうなると思う?
ごめん、眠いから文章が変だ。
>>140 Q5かQ6あたりでしょうか・・・
name="pic"があれば、"pic"が変数のpicに代入されて、問題ないように思いますが・・
>>139 document に pic というプロパティはない。
何で images とか forms とか省略したがるんだろうか?
<img name="light"> は images コレクションのアイテムの一つに
なるので、document.images["light"] と選択しなければならない。
[ ] の中は変数でもいいから、
document.images[picname].src = "...";
とすればいい。
今回の件とは関係ないけど text/javascript は引用符で囲む
必要がある。仕様上は / でタグが閉じられてしまう。
Netscapeとそれ以外のブラウザによって
違うスタイルシートが振り分けられるというJavaScriptを組んだのですが
windowsだとIE,NS共に正常に動作しますが
macのsafari,IEからの閲覧だと不具合が起こります。(NSだと正常に動作)
原因はどこにあるのでしょう。よろしくお願い致します。
【※dの数値はページごとに異なる数値が設定されています
他にif(d==2)という同内容の表記もあり。】
aName=navigator.appName.toUpperCase();
if(d==1){
if(aName.indexOf("NETSCAPE") >=0){
document.write('<LINK rel=stylesheet type="text/css" href="../font_n.css">');
}else{
document.write('<LINK rel=stylesheet type="text/css" href="../font_a.css">');
}
}
>>142 ご丁寧なレスありがとうございます。理解&動作成功しました。
ただ、これでも動作してしまうのですが それが何故かわかりません。
<script type="text/javascript">
function Change(){
document.light.src = "lighton.jpg";
}
</script>
<img src="light.jpg" name=light onMouseOver="Change()">
"text/jagascript" ですね、以後気をつけます。ご指摘ありがとうございました。
"text/jagascript" ですね
w
肉じゃが好きなんで・・・
>>144 まだ分かってないのね。まず前置きとして。
document.images.light.src と document.light.src は多くのブラウザ
では同じだが、前者の方が安全(documentの重要なプロパティ名とかぶる
と困るでしょ、しかも多くの人は何と何が重要なプロパティか知らない)。
次に、FAQ
>>3にあるように、
document.images.light.src と document.images['light'].src は同等。
今やりたいことは変数picnameに入っている文字列で画像を指定すること。
document.images.picname.src では document.images['picname'].src と
同等になってしまう。つまり'picname'という名前決め打ちになる。
それじゃまずいでしょ? だから document.images[picname].src なのさ。
>>143 まずMacのIEとSafariでfont_n.cssとfont_a.cssを決め打ちで適用してみて
どちらが正しいか確認すること。どっちも駄目ならどうやったって駄目だろ。
次に alert(aName) を挿入して判別文字列がどうなっているかを確認する。
そして最後にif文を正しいCSSが選べるように手直しする。そうやって理詰めで
やらないとプログラム作りなんて無理ぽ。おわかりかな。
>>143 何行目でどういうエラーが発生するのかわかりませんか?
スクリプトを使わずにスタイルシートをリンクさせた場合は正常に
動作しますか?
>>144 古い Netscape では name 属性のついた要素を document の
プロパティとしてアクセスできる仕様だったため、互換性のために
残っていますが、使用すべきではありません。
. 演算子は左辺にあるオブジェクトのメンバー (プロパティや
メソッド) にアクセスするものなので、右辺は変数展開されません。
その状態では document に light というプロパティは存在することに
なりますが、pic というプロパティは存在しないのでエラーになります。
150 :
144:2005/05/06(金) 11:30:42 ID:???
>>148-149 詳しいご説明ありがとうございます。
勉強になります。大分わかってきました。
これからも精進します!
某ECMAScriptスレでの質問とその回答。
> IE上で、任意の文字列のHTMLを表示させたいんだけど、それって可能?
> BODYだけではなくて、HTML、HEAD、SCRIPTも書き換えたい。
> (BODYだけならINNERHTMLの上書きで可能なのはわかってる。)
こうすればできる。(つまり一気に書いてcloseする。IEとMozで確認。)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var s = '<html><head><title>xyz<\/title><\/head><body><p>XYZ<\/p><\/hmtml>';
document.write(s); document.close();
}
</script>
</head><body>
<p><a href="javascript:test()">test</a></p>
</body></html>
152 :
143です:2005/05/06(金) 11:35:43 ID:???
早速アドバイスありがとうございます。
>>147 具体的症状としてはスタイルシートが読み込まれないという症状です。
>>148-149 スクリプトを使わずに標記した場合は
macでも正常にスタイルシートが適用されました。
次にmacを触る機会が回ってきたときに
何行目でどういうエラーが発生するのかを確認すると共に
>>148-149さんの方法を試してみようと思います。
>>152 ではmacでdocument.write()で決め打ちのlink要素を出力した
場合はどうかを次にチェックするべきですね。
質問です。
ファイルが存在するか否かを判断する関数がありましたら教えてください。
>>154 「ブラウザの動いているマシン上」の場合、ブラウザ上のJavaScriptでは
不可能。特定ファイルの有無がJavaScript上から分かってしまうとそれを
もとに悪さをすることができてしまう可能性があるため、セキュリティ制約
により禁止されている。
「サーバマシン上」となると、ブラウザ上で(クライアント側で)動くJavaScript
には原理的に不可能。CGIなどでやるしかない。
>>155 わかりました、ありがとうございました。
157 :
Name_Not_Found:2005/05/06(金) 23:00:24 ID:Z/ZgFdcN
Tabular Data Control (TDC)のFilter条件をを、URL(window.location.search)から取得したいのですが、
うまく行きません。(フィルター無しの状態で、全てのレコードが表示されます。)
test.html の一部
--------
<OBJECT ID="TestData" CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
<PARAM NAME="DataURL" VALUE="./test.csv">
<PARAM NAME="UseHeader" VALUE="true">
<SCRIPT LANGUAGE="javascript"><!--
document.write('<PARAM NAME="Filter" VALUE="' + window.location.search.slice(1) + '">');
//-->
</SCRIPT>
</OBJECT>
--------
呼び出しURL: 〜/test.html?num<10 など。
どうすれば上手くいきますか?
>>157 PARAMの1行だけでなく、<OBJECT>...</OBJECT>全部をdocument.write()で書く
ようにするべきなんじゃないかな。そのとき、まず書き出す「<」を全部削って
画面にそのまま表示させて全体として正しいことをチェックするべき。
もしかすると「num<10」の「<」がエンコードされてるかも知れない。
やったーーー。
<OBJECT>〜</OBJECT>を全てjavascriptで書く事により解決いたしました。
ご丁寧にありがとうございました。
良スレ
別窓の内容を親ウィンドウでdocument.write()で
作成して表示しているのですが、
サブウィンドウのフォントが変なんです。
日本語はいいのですが、英数字が欧文(クーリエ?)っぽく
なってしまい、等幅フォントを使いたいときに不便です。
フォントファミリーまで指定してあげないと
ダメなんでしょうか。
カウントダウンを行うスクリプトを入れてもらったのですが
そのJavaScriptを組み込むと変な画像が表示されるという症状が起きます。
何かのウイルスかもしれないのですが
もし解決策、対応策がありましたらよろしくお願いします。
<scriptlanguage ="JavaScript" src="data.js"></script>
がまずメインのページにあります。
today = new Date();
xDay = new Date(2005,7,7);
NC = (xDay.getTime()-today.getTime())/(24*60*60*1000);
document.write(Math.ceil(NC));
document.write('<img src="file:///Users/okazaki/Desktop/sigoto/himitu/otanosimi/img007.jpg">');
このスクリプトがメインのページに読み込まれる仕組みらしいのですが・・・
やはりウイルスなのでしょうか?
おまいの頭がウイルスにやられてるのかも。
>>163 そのスクリプト自体を読んで理解する気がないのなら帰れ。
理解する気があるのならまず自分でJavaScriptの勉強をして
検討してから、分からない箇所について個別に質問しろ。
ところでアンタHTMLは読めるんだろうね…
>>163 >document.write('<img src="file:///Users/okazaki/Desktop/sigoto/himitu/otanosimi/img007.jpg">');
カウントダウンに関係ないし、これが画像を表示する原因だろう
そもそもそのパス名「file:///Users/okazaki/Desktop/sigoto/himitu/otanosimi/img007.jpg」にある
画像を調べてみろw
質問です。
window.open で開いたウィンドウの中身も、元のスクリプト内に書いてしまうことはできますか?
加納ですか。方法教えてください。
msgWindow = window.open("");
msgWindow.document.write("message");
で加納になりました。
もう一つ問題発生です。そのウィンドウを元のウィンドウと同じウィンドウで開きたいのですが、
msgWindow = window.open("","_self");
msgWindow = self.window.open("");
でもだめでした。
元のウィンドウと同じところに新しいページを開いて、その内容も一緒に書いてしまうことはできますか?
>>170 そりゃ無理でしょ。元のウィンドウにデータを書き出せば、今開いてる
ドキュメントはアンロードされてしまう。
それに window.open() はポップアップブロックの設定によっては失敗する
可能性が高いので、できるだけ使わない方がいい。
DOM を使って今開いてるドキュメントの一部を書き換える方がスマートでは?
>>172 無理ですか・・・。
やろうとしていたことは、元のドキュメントの画像を、オープンしたドキュメントでロードして
完了したらonLoadで元のドキュメントに再度飛ばそうと思いました。
画像を完全に読み込んでから元のページを表示したいのです。
他に良い方法はありますか?
>>173 画像が徐々に表示されては都合が悪い理由がよくわからないんですが、
あらかじめ画像のスタイルを visibility: hidden; にしておいて、
必要になったときにスクリプトから "visible" に変えればいいだけだと
思いますが。
>>174 各商品リンクにonMouseOverすると画像が表示されるようにしていますが、
画像ロードが終わる前にonMouseOverすると、画像が見えないので、画像ロード完了してからページを表示したいのです。
ロードページでロードしてからメインページに飛ぶと、画像Arrayを2回書かないといけないので、メインから飛ばせる方法がないか考えていました。
visiblityはこれには使えませんが、使い方によっては面白そうですね。
>>173-175 質問のようなことだったら、ページ本体の上に「Loading...」とか書いた
レイヤを重ねて出しておいて、bodyのonloadの中でこのレイヤを消すとかで
いいんじゃないの。
>>175 画像はどういう風に生成してるの?
img 要素の onload イベントの中で関連づけるリンクの onmouseover
イベントを動的にセットすれば、画像がロードされるまではリンクに
マウスオーバーしてもイベントが発動しないようにすることができる。
動的なイベントの設定は addEventListener と attachEvent を使う。
前者は NN 用 (W3C DOM 準拠)、後者は IE と Opera 用。
className と id をうまく使えば、そんなに長いコードを書かなくても
複数のオブジェクトでコードを共用できる。
>>168のウィットでウェットなおまんこに吸い付きたい
>>179 忘れていたけど、JavaScript OFFだとそのレイヤが消えないから
そういう注意書きを書いておくの忘れないようにね。または
そのレイヤにスクリプトなし用の内容を入れておくとかさ。
id="foo"
としてある段落(P)の高さを取得するにはなんて書けばよかですか。
document.p.foo.heightとかですか。
>>181 何そのヤマカン満載は。まずDOMのチュートリアルでも読んで来い
といいたいとこだけどまあ簡単だから。
document.getElementById('foo').offsetHeight
全然違うだろ?こういうマニュアル見れば分かることをいちいち
2ちゃんに聞くんじゃやってらんないだろ?やっぱり勉強すれ。
>>162 ありがとうございました
外部CSSでフォント指定したら
ダメだったので、結局document.writeで
書いてやったらできました。
ありがとうございました
184 :
181:2005/05/07(土) 17:15:30 ID:???
<div id="hoge">&nbsp;</div>
<script type="text/javascript">
if(document.all.hoge.innerHTML=="&nbsp;") alert("true");
//&→&
</script>
IE6ならalertが表示されるが、Opera8だと何故か表示されない。
&nbps;を他の文字列(&amp;など)に変更すればOperaでも問題なくalertが表示される。
そこで、ためしにalert("["+document.all.hoge.innerHTML+"]");としてOperaで実行してみると [ ] と表示される。
//しかし、if(…==" ")としてみてもalertは表示されない。
そもそも、&amp;の場合は&amp;とそのまま表示されるから、&nbsp;も同じようにそのまま&nbsp;と表示されるべきだと思う。
これがバグか仕様かはともかく、Operaで上記のスクリプトを実行した場合、document.all.hoge.innerHTMLには何が入っているのでしょうか?
186 :
Name_Not_Found:2005/05/07(土) 19:16:04 ID:rg+V9MQg
age忘れ
>>185 何でわざわざdocument.allを使うかな、っていうのはともかく、
はスペース(\x20)じゃなくて非改行空白
(No-Break SPace、\xA0)だよ。
見た目は似てるけどスペースとは別の文字ね。
>>188 そりゃlenghtというプロパティが存在しないからだろ。
>>185 何やろうとしてるのかは知らないけど、文字列sの16進ダンプを
取りたければ次のようにする。ただし文字コードはUnicodeね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var t = '', s = document.getElementById('d0').innerHTML;
for(var i = 0; i < s.length; ++i)
t += s.charCodeAt(i).toString(16) + ' ';
alert(t);
}
</script>
</head><body>
<div id="d0">&nbsp;</div>
<p><a href="javascript:test()">test</a></p>
</body></html>
191 :
188:2005/05/07(土) 20:07:18 ID:???
>>189 うわぁ、ほんとだ。エラーにならないんっすね。
あんなに悩んだのに、一瞬で解決しちゃってちょっと感動しました。
ありがとうございました。
192 :
185:2005/05/07(土) 21:03:50 ID:rg+V9MQg
>>187>>189 言われたことを参考にして解決することができました。ありがとうございます。
document.all.〜については、getElementById('〜')を使ったほうがいいということでしょうか。
>>192 innerHTML の読み出しは、子ノードを列挙してそれを HTML に
書き戻すので、書き込んだソースの内容と一致するわけじゃない。
どんな風に書き戻すかはブラウザ依存。
"A" と書き込んだら、取り出すときは "A" になるし、
"&" だけなら "&" になるかもしれない。
document.all って Firefox1.0 でも Opera8.0 でも有効なんだね
IE 恐るべし
<html>
<head>
<script type="text/javascript">
function bchange() {
document.form1.test.value = "aaa" ;
}
</script>
</head>
<body>
<form name="form1">
<input type="button" name="test" onClick="bchange()" value="hoge">
</form>
</body>
</html>
で、form 部分をなくしたところ、
『document.test は Null またはオブジェクトではありません。』
とエラーが出ます。これが理解できません。
なぜ、document.test.value = "aaa" ; じゃいけないのでしょうか?
これは、もう、JavaScript がこういう作りだから、と理解するしかないんですかね?
あなたがオブジェクトモデルをわかってないだけ。
(正確にはJavaScriptとは関係ない。)
FAQに挙げられたサイトで(DOMをキーワードに)勉強しよう。
>>192 document.allは基本的にはIE専。クロスブラウザなのは標準規格にある
document.getElementById。洩れはIE専な質問の相手はしないことにしてる。
>>195 そうじゃなくてあんたが手抜き野郎だから。標準では
「document.forms.フォーム名.elements.部品名.value」
となる。これをどこまで省略しまくっても動くだろうかどうかなんて
洩れはいちいち考えたくもないね。だいたいあるブラウザで動いても
別のでは動かないかも知れないわけだし。
>>195 >>139-150 何で document.form1 って書くんでしょうね?
本当に不思議としか言いようがないですね。
フォームの中にない入力フィールドに name 属性を指定する
意味はありません。(サーバーに送信するわけじゃないから)
列挙して調べることもできますが、同じ name を持つ要素が
複数あった場合のことを考えると id を使って
getElementById で取得した方が簡単です。
当たり前のことですが id は name と違って同一文書内で
重複して指定することはできません。
>>192-193 とくにタグや属性が含まれた範囲のinnerHTMLは大文字小文字とか
引用符のつき方とかブラウザごとにバラバラだよね。だから
innerHTMLを参照してそれが何かと等しいなんていう判定は非常に
ブラウザ依存で、同じブラウザでもバージョン変わったら駄目に
なる可能性があるくらい不安定なものだと思うべきだろうね。
スマソ
>>197 ですが後半のは質問をよく読んでなかった。
取り消させてくらはい。
おまえら、eval(alert("アラート"))ってやってみ
ちなみに、eval(1+2+3)って使い方は見かけるんだが
やってみたが別に鳩が飛び出すわけでも富士山が噴火するわけでもない。
いったい何が言いたいんだ?
でっていう
JavaScriptでevalが必要な場面はほとんどない。
よく知らないままeval使う奴はダサイと思うね。
JSON のパースとか
いやまあ、それはね…evalでできるようにわざわざ作られてる
ものだからというか。よく知らないままというのとは違うかと。
evalを良く知っているからって威張る(イーヴァル)なよぉ〜
計算機を作ったり、文字列として扱われている数字に演算をするときは使うぞ
分からんやつは使い道を知らんかそういう場面に出くわさないものしか作らないやつだろ
parseIntやparseFloatやNumberが関数として使えることを知らないからって威張るなよぉ〜
175です。
176の方法で、ページ本体の上にレイヤを重ねて、body onloadでレイヤを消すようにしました。
ページ内にある<img src=...>は読み込みを待ってからonloadするようですが、Javascriptでimg=new Image(); img.src="...jpg";の部分はどうでしょうか?
読み込みを待たずに表示されてしまうことがあるようです。onloadまで待たせたい画像は全てページ内に<img src=...>で記述しておくべきですか?
>>180 ありがとうございます。レイヤ部分はjavascriptで記述しました。
>>209 window.onload が画像の読み込みを待つかどうかはブラウザ依存です。
基本的にイメージの読み込みはスクリプトの実行とは非同期です。
img 要素にも onload イベントがあります。
このイベントは画像の読み込みが完了した時点で発生しますので、
あらかじめセットしておけばそれを通知させることができます。
ユーザーの設定によっては自動的に画像を読み込むことすらしないので、
読み込まれていれば動作を実行し、読み込まれてなければ実行しないと
するほかありません。
画像が読み終わってるかどうかは img 要素の complete プロパティを
調べればわかります。
>>210 なるほど、わかりました。
onMouseoverで現れる画像も、img=new Image(); img.src=""; では無くて、
隠して<img>で記述することにします。
ありがとうございました。
213 :
Name_Not_Found:2005/05/08(日) 15:52:57 ID:h7kKsFQG
<a href="javascript:window.open('./sample.html','','width=680,height=480')">sample</a>
って書いてリンク先に行くとリンク元のページが変わり
[object]って表示されてしまいます
普通に表示させるにはどうしたらよいですか?
ジャンプ先に飛んでくれません。どこが間違ってるのでしょうか?
<HTML><HEAD>
<script language="JavaScript">
<!--
var add;
function jmpset(menu){
add=menu.options[menu.selectedlndex].value;
}
//-->
</script></HEAD>
<BODY>
<form>
<select name="menu" size="1" onChange="jmpset(this)">
<option value="#">ジャンプ先を選んでください
<option value="
http://www.yahoo.co.jp/">Yahoo! Japan
</select>
<input type="button" value="GO!" onClick="location.href=add">
</form>
</BODY></HTML>
215 :
Name_Not_Found:2005/05/08(日) 16:06:01 ID:SVfC/n9g
>>214 (・3・) アルェー 「l」じゃなくて「I」だYO
>menu.selectedlndex
menu.selectedIndex
>>214 それ絶対にエラー出てるはず。質問時にエラー内容の報告
できない奴は来るな!
>>2 をよめ!!
>>212 何ネタにマジになっているか知らんが、
>>208の言っている内容の方がおかしい
>parseIntやparseFloatやNumberが関数として使えることを知らない
誰もeval以外にparseIntなどを使わないとは言っていないし
厳密に言えば、int float は目的に応じて使い分ける必要があるだろ
JavaやC言語などでint、double、char、Stringなど変数の型を宣言する
プログラム言語を知っていて扱ったことがあるやつなら知っているだろ
evalを使うのがダサいというのは変わらんと思うけどね。
221 :
Name_Not_Found:2005/05/08(日) 20:40:54 ID:W4xMwIyB
top と parent の違いがわかりません!
>>221 それはさ、framesetの中にさらにframesetが入れられるという
ことが分かってないからじゃないの。topは「一番外側」、
parentは「1つ上」を意味する。1段しかないとどっちでも同じ
だが2段目(framesetの中のframeset)より深くなると違う。
223 :
Name_Not_Found:2005/05/08(日) 21:24:12 ID:W4xMwIyB
なるほど! 勉強不足だったみたいです。
レスありがとうございました!
質問はageていいけどその後のはsageてくれ。ageとsageを知らない
わけじゃなかろう?
225 :
Name_Not_Found:2005/05/08(日) 21:57:32 ID:NkxfiqJl
同時に複数のサーバに対してpingを実行するスクリプトを作成したいのですが、
起動する複数のコマンドプロンプトの画面サイズ全て一律に設定して、綺麗に
デスクトップ上での配置をさせたいと考えています。そこで、以下のスクリプトを
作成しましたが、
var WShShell = WScript.CreateObject("WScript.Shell");
for(i = 1; i <= 5; i++)
WShShell.Run("ping xxx.xxx.xxx." + i);
上記の場合では、コマンドプロンプトの画面サイズの設定とデスクトップ上の
配置が指定出来ません。
どなたか、別の方法でお分かりになる方がいらっしゃいましたら、教えて頂けますか?
target=""の中に _top _self _parent _blank その他ターゲットにするフレーム名の指定が可能だが
フレームで分割しているときに、上記の4つの指定をすると違いが分かりやすいかと
>>220 それじゃあんたは 2.55 という文字列があったら paserInt と parseFloat をわざわざ使い分けて
数値として扱うんだ?面倒くせぇ〜〜
上にも出ているが、使う場面に出くわさない人間の勝手な意見に過ぎないんだよ
evalでevalを使うのも一つの手段、int floatまで否定していない意見に食いついて墓穴掘るなよ
Number()使えよ・・
>>227 馬鹿じゃないの。最終的に文字列の先頭部分から整数値を取得したい
ときはparseInt()、実数値(たまたま小数点以下が0でもいい)を取得
したいときはparseFloat()、文字列全体として余計なものがあったら
NaNとしたいときはNumber()を使うんだろ。
eval()を使うと「何をやっているのか」という意図が読めないから
分かりづらいコードになる。だからダサい。その感覚が分からないなら
プログラミングはあきらめれ。いやまあ自分だけで何やってようと
それは勝手だが他人に講釈たれようとするのは迷惑杉。
もしかして
>>227 は parseFloat('2.55') が「0.55」になると
思っているんじゃないだろうか… 信じがたい阿呆な話だが。
>>228-230 >evalを使うのも一つの手段、int floatまで否定していない意見に食いついて墓穴掘るなよ
も読めない文盲ですか?おめーらほんっと否定しようとして墓穴掘ってるからアホだよ・・・
特に
>>230 >parseFloat('2.55') が「0.55」になると
バカじゃねーの?そんなこと書かれてねーよ?
ダブルクォートとシングルクォートの違いって何ですか?
" + "a" + " という具合に、ダブルクォートの中に
ダブルクォートを書くとエラーになるので、" + 'a' + " こうしなきゃ
いけないんだろうなぁ、って思ってますが、何か他にも意味がある気がするのですが
実際どうなんでしょうか?
>>229 >馬鹿じゃないの。最終的に文字列の先頭部分から整数値を取得したい
>ときはparseInt()、実数値(たまたま小数点以下が0でもいい)を取得
>したいときはparseFloat()、文字列全体として余計なものがあったら
>NaNとしたいときはNumber()を使うんだろ。
使い分けをする必要があるときはするだろ、単なる文字列の数字を、例えば
2.55が文字として扱われている場合、数値として扱うならと書いてあるが?
2.55をさらに整数部分だけをとるとか、使い分けする必要がない場合 eval で済ますだろ
そもそもあんたの言い分だとまさに
>>230が勘違いをしたことそのままの考えだな
要するに paserInt("2.55") から返された2と parseFloatがなぜか0.55しか返さないという勘違いで
2つの値を足すのか?バカバカしいよw
evalで済ませられることがあっても、わざわざ自分はparseInt、parseFloatを知ってますよ〜って
ことを言いたいだけで、筋の通らない屁理屈で否定しようとしなくて良いよ
どんなオブジェクト、メソッドにしろ自分が処理したい目的に応じたものを使えば良いじゃん
" + 'a' + " と ' + "a" + ' 二つに違いはあるんですか?
この二つを混合するサンプルがいくつもあって、違いに戸惑ってます。
>>225 (・3・) エェー 穴が空くほどスレタイを読んでみるといいYO
>>232 (・3・) エェー JS だと " と ' は等価だYO
でも別の言語だと微妙に意味が違ったりするから気をつけてNE
だからさ、コードはできるだけ意図が明確になるように書くべきで
何もかもevalにつっこむのはそれの正反対だっていうことさ。
そんな基本的なことが理解できない奴が現にいるということは
よく分かったよ、しょうもない。
>>237 レスどうもです。なんというか、安心しました。m(_ _)m
藻前ら宗教戦争やめれ、ちっともいいことない。過去ログ
見てeval()なコードとparseInt()/parseFloat()/Number()
なコードとどっちがまともなのが多いか見てみるとかどう?
まあ今から両陣営で頑張ってくれてもよいよ。
241 :
214:2005/05/09(月) 00:41:57 ID:???
parse*は文字列の中から探して取り出す。
evalは文字列をJavaScriptコードとして解析する。
オーバーヘッドが全然違うと思うけど、どっちでも動くからどっちでもいいやw
>>240 >やめれ
は同意。
でも >まとも ってのはチトあれだな。
こういうのって臨機応変。
こういうことだろ?
ある一定の効果(目的)を得るのに最も効率的な、(または適した)手段は?
ということ。
こういうやり方もあると手段の多様性を示すことも学習者には大事。
何がベストかは、決局、目的に寄るんだよなぁ。
アルゴリズムもあるねぇ。好き嫌いもあるねぇ(w)
でも食わず嫌いは伸びないぞぉ(w)
頭からこんなのは使えない、と断定仕切る向きも、アレだな。宗教だな。
脳内のテンプレが更新できないと時代に置いて行かれるぞぉ(w)
ん?一般論だから。実例示せって言われても、すぐ浮かばないわ(w)
その最後に一言言わないと気が済まないというのがアレなんだが。
245 :
Name_Not_Found:2005/05/09(月) 09:33:11 ID:2Tc8BSkG
質問です
解説書を読んでランダム画像を張ることが出来るようになりました
この画像が1枚1枚サイズが違うのでサイズを固定したいのですが
どうすれば固定できるのでしょうか?
>>245 imgにid属性つけて
document.getElementByIdでオブジェクトとして取得。
んで、オブジェクト.width、オブジェクト.height で幅・高さを指定
すみません、全く理解できませんでした・・・
出直してきます。
よく読んでやってみると出来ました
本当にありがとうございます
<html>
<head>
<script type="text/javascript">
<!--
data = 5 ;//@ここがグローバルになるのはわかるけど…
function hoge() {
time_b = new Date() ;
year = time_b.getYear() ;
}
function foo() {
document.open() ;
document.write( "年は" ,year, "です。\n" ) ;//Aなぜに year が?
document.write( "データは", data, "です。\n" ) ;
document.close() ;
}
//-->
</script>
</head>
<body onLoad="hoge()">
<form name="form1">
<input type=text name="timer">
<input type=button name="tests" onClick="foo()" value="write">
<form>
</body>
</html>
この中にC言語なり、ほかの言語をかじったことのある方はいらっしゃる
でしょうか? 上のプログラムで、Aがグローバル変数のような扱いにな
っている理由がいまいち理解できません。
Javascrptで扱う変数は、ブロック内であっても、すべてグローバルなもの
と解釈してよいのでしょうか?
>>250 そんな疑問に対しては絶対にJavaScriptのチュートリアルを
読むべきだぞ。関数内の変数は「var x;」のように宣言すれば
ローカル、宣言しないものはグローバルというのがJSの言語仕様。
そんなもの全部言語ごとに違うんでCがどうとか言っても無意味。
>>250 :::::::::::/ ヽ::::::::::::
:::::::::::| ば じ き i::::::::::::
:::::::::::.ゝ か つ み ノ:::::::::::
:::::::::::/ だ に は イ:::::::::::::
::::: | な。 ゙i ::::::
\_ ,,-'
――--、..,ヽ__ _,,-''
:::::::,-‐、,‐、ヽ. )ノ _,,...-
:::::_|/ 。|。ヽ|-i、 ∠_:::::::::
/. ` ' ● ' ニ 、 ,-、ヽ|:::::::::
ニ __l___ノ |・ | |, -、::
/ ̄ _ | i ゚r ー' 6 |::
|( ̄`' )/ / ,.. i '-
`ー---―' / '(__ ) ヽ 、
====( i)==::::/ ,/ニニニ
:/ ヽ:::i /;;;;;;;;;;;;;;;;
253 :
Name_Not_Found:2005/05/09(月) 15:28:30 ID:UzWvBGhH
同じForm内で
<input type="submit" name="submit" value="あ">
<input type="submit" name="submit" value="い">
とした場合にどちらのsubmitが押されたかを
判断するにはどうやったらいいんでしょうか?
254 :
Name_Not_Found:2005/05/09(月) 15:48:34 ID:pEyX4Yf3
>>253 受け取ったCGI側で判断するということ?それはnameで指定した
CGI変数(この場合はsubmitか)に値("あ"とか"い"とか)が入って
いるから分かるんじゃないの。しかしJavaScriptと関係ないなあ。
もしonsubmitの中で判断する話だとしたら、それはできないから、
onsubmitの代わりに各ボタン側にonclickを指定してやる。
それならそれぞれのonclickに別の動作が指定できるからね。
>>255 レスありがd。
そうですか、onsubmitじゃできないんですか・・・ Σ(゚д゚lll)ガーン
onclickしか方法がないんですね。仕方ないな。そちらでやります。
>>256 なるべく変えたくないということなら、ボタン側には
onclick="window.flag='あ'" onclick="window.flag='い'"
などだけ設定し、onsubmitの動作の中でwindow.flagを
参照するなんていうのもいいのでは。
スレ違いすっこめ! JavaScriptの質問を書け!
それがどうした?
スルーするべきだった
262 :
Name_Not_Found:2005/05/09(月) 18:31:57 ID:Q7UVJP9q
JavaScriptでinnerHTMLをつかった場合の質問です。
divの中にinnerHTMLで画像をたくさん貼り付けているのですが、
画像の読み込みが完全に終わらないまま止まってしまう事がIE6で稀にあります。
本来100*100のサイズの画像が100*78くらいで止まり、下に空白が残ります。
これを防ぎたいのですが、どのような対処法があるのでしょうか?
とりあえずDOMを利用して書いてみることを検討しつつ、
ほかにも何か方法があれば是非教えてください。よろしくお願いします。
>>262 山のように画像を入れると読み込みエラーする可能性あるよね。
画像を1つ読み終わったら次を読むというふうに1個ずつやったら
確実だと思うがどうよ。divの中のinnerHTMLの文字列の形を教えれ。
>>263 onload/onerrorをハンドルする必要があるとすると、なかなかに面倒ですね。
しかし、DOMでうまくいかなかったらそれでやってみるしかないですね。
IEが読み込みをとめてしまうきっかけさえわかれば対処できそうなのですが…
読み込む形は次のようなものです。
<div style='float:left;position:relative;width:128px;border:0px solid red;' align='center'>
<div name='item' style='position:relative;top:14px;width:100px;'>
<div style='position:relative;width:100px;height:100px;border:1px solid black;'><a name='subject-text' href='javascript:void(0)'><img border='0' width='100' height='100' src='imgs/img3.jpg'></a></div>
<a name='subject-text' href='javascript:void(0)' style='position:relative;top:10px;width:100px;color:black;text-decoration:none;'>
<center>The subject of the image is here</center>
</a><div style='position:relative;height:10px;width:0px;'></div>
</div>
<div style='position:relative;height:24px;width:0px;'></div>
</div>
上のをテンプレートとして、
一つのdivの中に上記のdivが10〜20個くらい入ります。
あ、<center>タグはデバッグのために入れているだけです。
>>264 結構面倒だね。むしろ逆に、全部の画像を先読みしてしまい、完了した時点
でinnerHTMLを書くっていうのはどうかな。そうすれば読み込み完了してる
のだからエラーにならないというか。
var imgs = new Array(20);
for(var i = 0; i < imgs.length; ++i) imgs[i] = prepare(i);
function prepare(k) {
var i = new Image(); i.src = 'imgs/img' + k + '.jpg';
i.onload = function() { if(++count == 20) /* innerHTML セット */ };
i.onerror = function() { imgs[k] = prepare(k); }; // 再度チャレンジ
}
267 :
262:2005/05/09(月) 19:26:02 ID:???
自己解決しました。
なんと悪さをしていたのは href='javascript:void(0)' でした
void関数は仕様では何もしない関数のはずですが、
IEではどうやら現在読み込み中の画像の読み込みを止めてしまう副作用があるようです。
解決策として
<a href='#' onclick='return false'>
という方式を取りましたが、これだとアドレスバーの右端に#がついて汚いんですよね
もうちょっと模索してみますが、とりあえず件の問題については解決したので報告しました
すまそ、prepare の本体最後に「return i;」これがないと無意味。
269 :
262:2005/05/09(月) 19:27:58 ID:???
>>266 をを、ありがとう。
先読みのコードは知らなかったので役に立ちます。
これを境に先読みにしてみようかな…。
270 :
250:2005/05/09(月) 19:48:37 ID:???
ここを見て、
ttp://www5a.biglobe.ne.jp/~n_rieko/javascript/8.htm また、手持ちの本にも書いてあったことですが、
@NetscapeNavigatorではvarを使い宣言した場合その変数は宣言された場所に
限らず全てグローバル変数になります。
AInternetExploreでは関数の中で宣言した変数は全てその関数のみのローカル
変数となります。
これはまったく逆のことを言っていますよね?
おかしいと思い、Netscape をダウンロードして確認してみたのですが、
@は嘘のようでした。var a = "1" とかを関数の内で宣言してもグローバルには
なりませんでした。これはどういうことでしょうか? なぜ、@のような
勘違い(?)が発生したのでしょうか?
一応、
>>6 にある変数の宣言の項目の部分は目を通してみましたが、@のような
ことが書かれてはいませんでした。
>>270 丸数字やめてね。その解説ってすごく古くない?Netscape Navigator 2.0
とかじゃないの? すくなくともNavigatorとかいう名前をつけてるのはN4
までだから。現在の言語仕様だったら ECMA-262 ed.3 を参照すれ。
272 :
Name_Not_Found:2005/05/09(月) 20:15:55 ID:K/slflcb
document.myForm.mySelect.options[i] = new Option(theMenu[i]);
で新しく作った option を消す場合は、どのようにしたらいいのでしょうか?
delete だと上手くいきません。
確かoption専用のメソッドがあったような。removeなんちゃらっていう。
というかこれくらいの情報は自分で調べてもらいたいところだから、調べ方を教えよう。
1: googleで "dhtml reference"で検索
2: トップに出てくるMSのページをクリック
3: 左のメニューからObjects->optionをクリック、右のページでMethodをクリック
4: それっぽいのを探す
>>251,
>>271 私のような、実にくだらないかもしれない疑問に答えて下さり、
ありがとうございました。
おっしゃる通り、古い本であります。
疑問が晴れて、多少すっきり致しました。
IE専で何が不都合なのか理解できない
理解できない奴はずっとIE専してろ。
クロスブラウザが必要な奴がいないと勝手に思ってれば。別に止めない。
皆のことを考える人は違いますね
XMLHttpRequestで取得した画像(JPG)を画面に表示する方法がわかりません。
1. サーバーが画像をそのまま送信し、ブラウザがresponseStream
またはresponseBodyをimageオブジェクトに結びつけて表示。
2. サーバーが画像をテキストにエンコードしてから送信し、ブラウザが
responseTextを画像にデコードした後imageオブジェクトに結びつける。
のようなことを考えているのですが、どちらもうまくいきません。
どなたかご存知の方がいればご教授願います。s
281 :
280:2005/05/09(月) 23:07:40 ID:???
すみません。上の書き込みの最後のsはタイプミスです‥‥
普通にnew Image()してからsrcプロパティをセットするのじゃいけない理由でもあるの?
283 :
280:2005/05/09(月) 23:30:03 ID:???
>>282 それだとsrcのイメージファイルがロードされるまでブラウザが
固まってしまうんですよ。
>>283 画像の動的な読み込みを非同期で行いたいということかな?
Imageオブジェクトのsrcプロパティをセットする部分を
setTimeoutで分けてみるとどうなる?(試してないけど)
>>283 てかこちらで試してみたところImageオブジェクトのsrcプロパティを
セットしても画像がロードされる前に次のステートメントへ移動する
(画像は非同期に読み込まれる)ような気がするが、
ブラウザが固まるというのはどのようにやった場合かね?
>>278 ご心配なく。Web制作板的にはアンタのがずっと厨房だから。
>>283 漏れも
>>285のが普通だと思う。固まるというのは勘違いでは?
単に読み込みが増えて遅くなるだけとか。
287 :
280:2005/05/10(火) 03:10:22 ID:???
>>284 はい。画像を非同期で読み込みたいのです。
テキストは非同期で取得できるのですが、画像の場合の方法が思いつきません。
ちなみに、setTimeoutを使っても、タイマーが実行されるときは同期
で画像を取得するので、画像をリクエストしてから受信するまでの時間、
固まってしまいました。
>>285 例えば、画像をドラッグできるようにするスクリプトに、
10ピクセル以上ドラッグすると画像を取得するようなコードを
付け足すと、一定時間(1秒くらい?)固まるのが実感できると思います。
>>286 遅くなるという感じではないんですよね。
画像の取得が完了するまでは完全に固まって、それが終わると急に動き出します。
>>287 それってただ単に処理がもたついて描画が間に合わないだけじゃない。
>287のいうスクリプトを作ってみたけど俺の環境ではそこまでもたつかなかったぞ。
それでも違うと言うのなら具体的にどんなスクリプトを書いたら固まったのかいってくれ。
できればお前さんのPCのスペックも。
XMLHttpRequestって標準なの?
発祥はIE専だと思ってたけどな。
290 :
Name_Not_Found:2005/05/10(火) 06:28:03 ID:lH2ePrlp
文字をドラッグ選択すると、選択された部分が反転しますが
それを無効(つまり選択されず反転されない状態)にする方法ってありますか?
>>289 Mozilla、Opera、Safariも対応した今では事実上の標準といった扱いじゃないか?
対応状況はそれぞれに異なるけどな。
responseStreamとかresponseBodyとかGeckoには存在しないよ
>>290 >>1 どういう風に使いたいのか知らないけど基本的にそれは迷惑行為だよ
292 :
Name_Not_Found:2005/05/10(火) 07:03:26 ID:lH2ePrlp
>>291 迷惑?なんで?ドラッグされると面倒な場面で対処したいんだけど・・・
勝手な言い掛かりはやめてもらえませんか?
かといって、使用目的を事細かに説明しろとでも?
あるゲームを作っているんだけど、どうしても左クリックによる
オブジェクトの反転を避けたい、ただそれだけなんだけど・・・
>>2 にあるような問題も無いし、何が迷惑なんだろう?
>>291にはその迷惑という理由の方を説明してみらいたいね
でなきゃレスする資格はないよ
294 :
Name_Not_Found:2005/05/10(火) 07:54:38 ID:4CtQEw/Y
295 :
Name_Not_Found:2005/05/10(火) 08:26:11 ID:OIVGUZ8w
下記のスクリプトを onclick="aaa();" href="#_top"とした場合、
ページのタイトルがこれをクリックするたびに
ページタイトル #_top#_topというふうに
#_topが増えていきます。
タイトルに#_topが付かないようにするにはどうすればよいでしょうか。
よろしくお願いします。
function aaa(){
<!--
document.getElementById("<aaa>");
//-->}
>>295 何がやりたいのかさっぱり分からない
> href="#_top"
<A> アンカータグにつけているの?それとも aaa() ファンクションの中に
ページを飛ばすスクリプトを入れたいの?
>document.getElementById("<aaa>");
この部分については id の付け方が不適切
>>295 そもそもその「aaa()」というのは何をするためのものなの?本当に
その4行だったらとても回答する気にならないぐっちゃぐっちゃな
コードだけど。
とりあえず「onclick="aaa();return false"」とすれば#_topは増え
なくなるが、これも FAQ
>>3 を読んでればハマらないはずなんだが。
>>290-293 いわゆる「コピペ禁止」と思われたんじゃないの。ゲームということなら
ひとことそう書いてくれれば納得したと思うが…
で、方法だけどonselectイベントの度にセレクションをcollapseさせる
とかいう感じでやればできそうな気がする。試してないけど。
299 :
295:2005/05/10(火) 08:57:11 ID:OIVGUZ8w
>>296-297 早急なレスありがとうございます。
<a onclick="aaa();" href="#_top">aaa</a>というふうにしています。
>>297様に教えて頂きましたとおりに
<a onclick="aaa();return false" href="#_top">aaa</a>にしたら
問題が解決しました。
ありがとうございました。
300 :
291:2005/05/10(火) 08:58:45 ID:???
>>292 オレは文章を読むときに右クリックから
選択語句を検索とかよくやるから
「文章を」選択できないようにされると
はなはだ迷惑なんだよ。
まあ画像とかを選択不可にしたいのなら
そのオブジェクト上でマウスの
左ボタンによるmousedownイベントを殺したら。
<html>
<head>
<script type="text/javascript">
<!--
function hoge() {
document.form1.font1.color = "#ffddcc" ;
}
//-->
</script>
</head>
<body>
<form name="form1">
<font id="test" name="font1" color="#000000" size="4">a</font>
<input type="button" onClock="hoge()" value="FONT">
</form>
</body>
</html>
これで、hoge がクリックされたら、フォントの大きさが変わるように
したいんですけど、どのようにすれば良いのですか?
getElementById というのも使ってみたけど、駄目でした。
閲覧しながらその時々の指定の文字列を置き換えるbookmarkletを作りたいのですが、IE6窓でうまくいきません。
javascript:var x=prompt("置き換えたい文字列","");if(x!="")document.body.innerHTML=document.body.innerHTML.split(x).join("ワショーイ");eval();
エラーは起こりませんが文字列もそのままです。何がまずいのでしょうか。
>>301 getElementByIdをどう使ったのか書け。自分でやったことを示す
のがまず最初だ。
304 :
301:2005/05/10(火) 12:42:19 ID:???
すみません。上のfunction hoge をこんな感じにしてみたのです。
とにかく、うまく行きません。図々しいですが、お手本お願いできませんか?
function hoge() {
document.form1.getElementById('test').color = "#ffddcc" ;
}
305 :
Name_Not_Found:2005/05/10(火) 12:45:05 ID:2QjXj+f5
>>302 最後の「eval();」は何?ふつーbookmarkletは最後「void(0);」じゃないの。
そう直して動かしたらIE6でもMozでも動作したが。
>>304 それで色は変わるの変わらないのどっち。何が分からないわけ?
「.size = '7'」とかそういうのはやってみなかったの?
307 :
301:2005/05/10(火) 12:46:59 ID:???
onClock になってますが、onClick の間違えでした。
けれど、直しても結局エラーみたいです。
>>307 だったらエラーの位置と内容を書けってば。
>>2 を嫁。
ちょっとまてよ、document.form1.getElementById(...)じゃなくて
document.getElementById(...)だぞ。いったいどこからそんなヘン
なものを仕入れたんだ?
309 :
301:2005/05/10(火) 12:53:31 ID:???
>>308 おぉ…
>>308様、ありがとうございます!
なんと、あっさりと直ってしまいました。form1 はいらなかったのですね。
別に document.form1.getElementById() でも構わんと思うが。
form1の子孫から探し始めるだけで。
311 :
302:2005/05/10(火) 13:00:27 ID:???
>305
ご指摘のところを直して動かしてみたところ、operaは動きましたが
IEはやはり変化無しでした。
何か設定が悪いのかもしれませんのでもう少し弄ってみます。
>>310 え、嘘でしょ? getElementById()はDocumentに対して定義されて
いるからフォームや一般のノードにはないと思うんだけど…
313 :
301:2005/05/10(火) 13:02:49 ID:???
>>310 そうなのですか、お勉強し直してきます。 orz
>>311 不思議だねえ、Win IE6で試したけど… エラー出てないんだよね?
315 :
302:2005/05/10(火) 13:07:25 ID:???
>314
健康そのものです。
ガ板にあるようなpromptを使わないキターなんかはきちんと動いてるんで
何かそのへんに問題があるんでしょうが
>>315 そうか、WinXP SP2のpopup blockとかじゃないの?
317 :
302:2005/05/10(火) 13:15:46 ID:???
>316
Meでgoogleツールバー使用なのですが、promptで文字入力までは行くんですよ。
で、画面が書き換えられた後も文字列は変化しないんです。
googleツールバーのポップアップ禁を解いてみたのですが、効果無しでした。
なんでだろう。
>>300 >「文章を」選択できないようにされると
>はなはだ迷惑なんだよ。
おめーの勝手な妄想とか意見の押し付けとか良いから
全然迷惑じゃないって
ソースだって表示されないようにする技術があるんだし
コピペできないようにする技術もあるし
自分勝手な押し付けがいかに無意味か、理解してからレスしろ
だいたいお前のレスは直接的な解決策じゃないだろ
>>318 宗教戦争は迷惑だからやめれって。やりたきゃどっかよそで頼むわ。
真面目に回答してくれてる奴だっているんだしさ。そもそもがあれっぽちで
ムカつく奴は2ちゃん向いてないだろ。厨はスルーが基本ね。
320 :
302:2005/05/10(火) 13:24:09 ID:???
promptで入力する文字が半角だとIEでもいけるようです。
>>320 うーぬぬぬ。そりゃバグのようなもんか?promptで入力したものを
直ちにalertで表示させたらちゃんと化けずに表示される?
うろ覚えだけど、
IE6以前 だと prompt で入力された文字列には、何故か最後にゴミがつくときがあったような気がする。
x = prompt(〜略〜); x = x.replace(/[\x00-\x07\x20]+$/, ''); 〜以下略
とか試してみたら?
試してない上、間違ってるかもだけど(´д`)
>>312 の言う通り。
>>310 は ×でしょ。
getElementsByTagName()と勘違いしてねーか?
324 :
Name_Not_Found:2005/05/10(火) 20:47:11 ID:8kxKbCxT
フォーカスを持たせたいがためだけにanchorタグを使って、
<a href="javscript:void(0)">〜</a>
というようなコードを書いていたのですが、これで大きな問題が発覚しました。
他の部分でJavaScriptを用いて動的にそこそこ大きい画像ファイルを読み込んでいるのですが、
IEの仕様で、hrefの部分でjavascript関数を実行すると画像の読み込みも途中で止まってしまう模様です。
(void関数の仕様ではなく、自分で何もしない関数を作成して確かめてみました)
仕方ないのでvoid関数などを使わずに書きたいのですが、
<a href="#">〜</a>だとクリックすると画面の上部まで飛んでしまう問題が解決できません。
<a href="#" onclick="return false">〜</a>も試してみましたが、ジャンプを防げませんでした。
何かいい方法はないでしょうか?
>>298 onselectstart="collapse;" または onselectstart="return false;" できました
ヒントを教えてくれてありがとうございました
現在onloadでinit関数を呼び寄せ書かれたタグの属性を換えて、
そこでlocation.reloadしているのですが、無限ループに陥ります。
フラグを立てても機能しません。立て方がおかしいのかもしれません。
グローバルで宣言・代入して、initの中でフラグを書き換えているのですが、
location.reloadしている所為かフラグが変わりません。
無限ループに陥らず、1回だけinitして内容が画面に反映されてる方法を
教えてください。
onloadより早いタイミングで、ページが読みこまれる前にinit出来ればいいのですが・・・
>>326 グローバル変数でもスコープはそのドキュメント内だけ。
reload したら当然初期化される。
別のページに飛んだのと同じこと。
クッキー使えばなんとかなるけど
クッキーを無効にしている人は結構多いので
それに頼りすぎるのはよくないかもしれない。
>>326 >location.reloadしている所為かフラグが変わりません
reload した時に flug も initialize されるはずだから当然.
問題は function init(){} の中身だと思う.
なぜ reload する必要があるの ?
329 :
326:2005/05/10(火) 22:51:03 ID:???
>328
早速のレスありがとう。
HTMLの内容は仮の値が入っています。
最初に関数を呼び出したときの処理値で正規の値の反映した
値を画面に反映させたいのです。
具体的に言えば、自分のテレビ番組表を作っていて、
HTMLには仮の日付が入っているので、initで今日の値を計算して
iframe等呼び直したいと言う事です。
昔作った時は、HTMLすべてを書き換えてdocument.write()してた気がしますが、
属性を換えるだけでスマートに出来ないかなと思考中です。
無理ですかね?HTML書き直すとJavascriptが汚くなるんで・・・
>>329 日付計算は onload 以前にやることができる.
たぶん, このケースでは reload は必要ないと思うな.
obj. innerHTML で書き換えてみては ?
(innerHTML は ほとんどの web-browser がサポートしている)
ところで属性って何 ?
(日本ではなんでもかんでも '属性' という言葉で片づけられる傾向がある)
attribute なら, たいてい書き換えが可能だけど.
? iframeだけリロードしたらいいじゃん。 src の中身かえるだけだろ?
332 :
326:2005/05/11(水) 00:06:35 ID:???
この場合、属性=attributeでお願いします。
>日付計算は onload 以前にやることができる。
これはどうやるのでしょうか?ホントはonload前にinitを呼び出したいのですが、
これは可能でしょうか?
attributeを換えても、例えばiframeのsrcを書き換えても、そのsrcのサイトは
まだ表示されませんよね。これを表示し直すには、innerHTMLなどの再表示機能
を生かせということですね。
やってみたら出来ました。
でも、きらいな「¥”」 と「”」の文字がウジャウジャ出来ました。
今回はトリッキーに
with(document.all["ifr"]){
outerHTML = outerHTML;
}
なんかで、中のHTMLに触れずにやれましたので良かったですが、
もっとvalue,name等々のAttributeを書き換えて何かアクションを起こすことで
スマートに再表示したいのですが、出来ないですかね?
(reloadするとスタックの変数みんな飛んじゃうし・・・)
333 :
326:2005/05/11(水) 00:13:51 ID:???
>331
コードはどうなります?
srcの中身換えても自動的に内容はかわりませんよ。
自己レスですいませんが、
332のやり方だと再表示されてから下のバーの計算状況を表示してる
青バーが終わりません。
おかしなコードで機械がイカレタカナ?
しばし奮闘中。
>>326 URL の ? 以降で変数を与えることもできるけどね。
どのみち JS 必須なら
最悪 iframe 自体を document.write() してしまえばいいんだけど。
サーバサイドのスクリプトは使えないの?
335 :
326:2005/05/11(水) 00:35:52 ID:???
>334
いや〜、なるべくクライアントサイドで完結したいんだ。
document.close(),write()とouterHTML・innerHTMLの書き換えは
ニアリーイコールでしょ。
outerHTML・innerHTMLの書き換えは、自動的に再表示してくれるし。
でもどちらも「¥”」地獄が目に見えてる。メンテ大変そう。
> いや〜、なるべくクライアントサイドで完結したいんだ。
自分しか見ないんだったらいんじゃね
337 :
302:2005/05/11(水) 00:54:36 ID:???
>321
日本語を指定してもちゃんと表示されるようです。
>322
うまくいきました!
javascript:var x=prompt("置き換えたい文字列","");x=x.replace(/[\x00-\x07\x20]+$/, '');if(x!="")document.body.innerHTML=document.body.innerHTML.split(x).join("ワショーイ");void(0);
窓MeのIEでも置き換わってくれました。
321様も度々本当にどうもありがとうございました。
>>333 終わらないのはdocument.close()してないからでしょ。
>>337 おーよかったね。 if (x!="") は if (x) だけでもいいと思うよ。
>>333 > srcの中身換えても自動的に内容はかわりませんよ。
え、変わるよな?w おれだけ?w
<script type="text/javascript">
function jump (url) {
document.getElementById('view').src = url;
}
</script>
<div id="url-select">
<select onchange="jump(this.options[ this.selectedIndex ].value)">
<option value="
http://google.co.jp/" selected="selected">Google</option>
<option value="
http://yahoo.co.jp/">yahoo</option>
<option value="
http://goo.ne.jp/">goo</option>
</select>
</div>
<iframe id="view" src="
http://google.co.jp/" width="100%" height="300"></iframe>
まあ、できなかったら createElement すればいいんじゃ。
>>326 なんかいろいろやった後で悪いんだけど、それだったら
ソースのできるだけ上(<title>...</title>の直後くらい)に
<script type="text/javascript">
function init() { ... initの定義 ... }
init(); // ここですぐ呼ぶ
</script>
を入れておけばいいんじゃないの?で、onloadは不要と。
>>324 : <a href="#" onclick="return false">〜</a>も試してみましたが、
: ジャンプを防げませんでした。
絶対おかしい。それで普通はいいはず。どっかミスタイプない?生成
するとき「"return false"」の両側の「""」が落ちてしまってるとかさ。
うまく行かない最小限のソース作って貼ってみる?
342 :
326:2005/05/11(水) 01:50:26 ID:???
>339
> srcの中身換えても自動的に内容はかわりませんよ。
>え、変わるよな?w おれだけ?w
すいません。出来ました。 原因:頭尾の¥”付け忘れ。
でも、今度はsrc代入の時点で「ページを表示できません」ページが
出てきました。さっきのYahooの「サイトが見つかりません」ページすら
行きません。どうやらローカルのdnserror.htmを開いているみたい。
またしょぼい事でエラー出してるのでしょうか。
<script language="javascript">
<!--
var today;
var Now;
var month;
function init(){
manageDate();
var Tuki = month +1;
alert(Tuki + "/" + today);
if(document.forms(0).elements(0).options(0).value != Tuki + "/" + today){
setOptionData();
chngSRCinIframe();
}
}
343 :
326:2005/05/11(水) 01:52:19 ID:???
function chngSRCinIframe(){
var areaCode ="sizu";
var dayCode = Now.getDate();
if(dayCode < 10){
dayCode = "0" + dayCode;
}
var monthCode = month;
monthCode++;
if(monthCode < 10){
monthCode = "0" + monthCode;
}
var dateCode = Now.getFullYear() + monthCode + dayCode;
var targetSRC = "\"
http://tv.yahoo.co.jp/vhf/" + areaCode + "/" + dateCode + "24.htm\"";
document.all["ifr"].src = targetSRC;
}
344 :
326:2005/05/11(水) 01:52:43 ID:???
function setOptionData(){
with(document.forms(0).elements(0)){
var endDateofMonth = getEndDateofMonth();
for(var i=0;i<8;i++){
var daDate = today + i;
if(daDate > endDateofMonth){
daDate = daDate - endDateofMonth;
}
var Tuki = month + 1;
options(i).value=Tuki + "/" + daDate;
options(i).text=Tuki + "/" + daDate;
}
alert(innerHTML);
}
}
function getEndDateofMonth(){
var endDates_inYear = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
return endDates_inYear[month];
}
345 :
326:2005/05/11(水) 01:53:10 ID:???
function manageDate(){
Now= new Date();
today = Now.getDate();
month = Now.getMonth();
}
-->
</script>
</head>
<body onload = "init()">
<form name="DATE">
<select name="date">
<option value="5/6">5/6
<option value="5/7">5/7
<option value="5/8">5/8
<option value="5/9">5/9
<option value="5/10">5/10
<option value="5/11">5/11
<option value="5/12">5/12
<option value="5/13">5/13
</select>
<input type="button" name="submit" value="ok" onClick="loadOtherDate(this.form.name)">
</form>
346 :
326:2005/05/11(水) 01:53:55 ID:???
<iframe src="
http://tv.yahoo.co.jp/vhf/sizu/2005051524.html"
style="width:100%;
height:100%;
display:block"
scrolling="auto"
frameborder="0"
border="0"
marginwidth="0"
marginheight="0"
topmargin="0"
leftmargin="0"
name="ifr"
id="ifr">
</iframe>
</body>
読む気しねええ
nullレベルだな
もっと簡潔に書けないものなのかww
動かないのもうなずける。
351 :
326:2005/05/11(水) 02:41:11 ID:???
>350
スレに関係ないけど、俺んち2県にまたがって放送見れるので、
出来れば2県分全部見れるような番組表に組みなおしたいわけ。
まずはその地ならしのつもりが・・・
>2の件はやっぱ言われましたか、スマソ。
結局頭尾の¥”は要らないみたいね。その方が一応は正規のアドレスらしいものを
呼び出してる。ただlengthで調べたら置き換え後の文字数が1つ少ないんだよね。
NULL文字でも入れるのかな?
>>341 ありがとう!断言してもらったおかげで原因がわかりました。
原因は、document.onclickがreturn true;を返していたことでした。
これのせいでanchorタグについているonclickのreturn falseが無効にされてしまった模様。
document.onclickで単純にreturn;とすれば思惑通りに動きました。
正規表現でつまずきました。orz
配列
var hairetu = new Array( "[A]", "[B]", "[C]" ) ;
これを
[0] ⇒ [A]
[1] ⇒ [B]
[2] ⇒ [C]
こんな感じで文字列置き換えしたいんですけど、どーしても分からない(;´Д`)
↓ソースはこんな感じ
var loop = hairetu.length ;
var m = "" ;
for( i=0 ; i<loop ; i++ ) {
m = "/\[" + i + "\]/g" ; // これは出来るかな〜と思ってやって出来なかったorz
str = str.replace( m, hairetu[i] ) ;
}
どなたか分かる方いらっしゃいますか?(;´Д`)
>>326 <script type="text/javascript">
<!--
var temp_date = new Date;
function pad_zero(num){
if(num < 10) num = "0" + num;
return num;
}
function add_option(){
var select_obj = document.getElementById("select_date");
var yy, mm, dd;
for(var i = 0; i < 7; i++){
yy = String(temp_date.getFullYear());
mm = String(pad_zero(temp_date.getMonth() + 1));
dd = String(pad_zero(temp_date.getDate()));
select_obj.options[select_obj.length] = new Option(yy + "/" + mm + "/" + dd, yy + mm + dd);
temp_date.setHours(temp_date.getHours() + 24);
}
}
function load_page(){
var select_obj = document.getElementById("select_date");
document.getElementById("iframe_1").src = "
http://tv.yahoo.co.jp/vhf/sizu/" + select_obj[select_obj.selectedIndex].value + "24.html";
document.getElementById("iframe_2").src = "
http://tv.yahoo.co.jp/vhf/aichi/" + select_obj[select_obj.selectedIndex].value + "24.html";
}
//-->
</script>
>>353 重要なのは new RegExpでreplaceで置き換えをする文字列を作るところかと
以下のソースでは省略しているけど、マッチ方法の指定で g(グローバルマッチ)必要なら
mystr = new RegExp(n , "g") という形で指定して
途中に入っているアラートは str の置き換えができたか確認するためだから、不要なら消しといて
var hairetu = new Array("A", "B", "C")
str = "0 1 2"
loop = hairetu.length
alert("置換前のstr:" + str)
for(n=0;n<loop;n++) {
mystr = new RegExp(n)
str = str.replace(mystr,hairetu[n])
}
alert("置換後のstr:" + str)
357 :
356:2005/05/11(水) 05:57:17 ID:???
すまん、ちょっと str = "0 1 2 0 0 1 1 2 2" にして
>>356のソースを試したら
置換後は A B C 0 0 1 1 2 2 になってた
mystr = new RegExp(n , "g")
でグローバルマッチにしたら A B C A A B B C C となったんで
マッチ方法の指定は適当にしておくべし(^^;
>>353 一応forループを使わなくてもできる
var arr = ["[A]", "[B]", "[C]"];
var str = "[0] [3] [1] [0] [1] [2]";
str = str.replace(/\[(\d+)\]/g, function(matched, p1, offset, input) { var n = Number(p1); return arr[n] || ""; });
>>354 それ試してみたけど結果はこうなったよ
置換前のstr: [0] [3] [1] [0] [1] [2]
置換後のstr: [A] [B] [A] [B] [C]
って、[3]を置き換える文字が存在しないってことで良いのか、すんまそ
って、置き換える文字が存在しない場合は置き換えられずに残るってことならやっぱまずいよな
>>361 それだったら最後を「return arr[n] || matched;」にするだけだろ。
っつーか、[ ]がうざいな
質問です。
onMouseoverで、
document.getElementById('list').style.backgroundColor = "red";
としていますが、id=list がたくさんあるにもかかわらず、一番上のlistにしか適用されませんでした。
全てのlistに適用するためにはどうしたらいいですか?
id は一つだけしか使えないのが原則。name にしてみ
>>365 レスありがとうございます。
nameにした場合は、getElementByNameとするのでしょうか?
エラーが出てしまいました。
>>364 id は同一ドキュメント中では一回しか使えません。
複数の要素を対象とするためには getElementsByTagName で
列挙して反復処理してください。
要素を分類名を付けるには name ではなく class を使います。
(スクリプトから参照するときは className になります)
>>364 HTMLはどうなってる? それによって対策が変わると思うが。
name属性は限られた要素にしか存在しないぞ。
<style type="text/css">
div.list {
background-color:yellow;
margin: 1em;
}
</style>
<script type="text/javascript">
function onList (){
document.getElementByTagName('list').style.backgroundColor = "red";
}
</script>
<div class=list name=list id=list onMouseOver="onList()">List1</div>
<div class=list name=list id=list onMouseOver="onList()">List2</div>
<div class=list name=list id=list onMouseOver="onList()">List3</div>
HTMLはこんな感じです。これでもエラーでした。
反復処理をしないとだめでしょうか。
>>369 同じタグならgetElementsByTagName("DIV")ってのもあるみたいだが
>>369 div要素にname属性は存在しない。
ひとつのHTML文書中に同じ値のid属性が登場してはならない。
class=listってなぜそこでul要素を使わない。
まあHTMLは今のままで解決するなら
>>370のいうとおり
getElementsByTagName("div")でclassNameプロパティの値が
listであるものだけ背景色を変えるとかかな。
すまん、今回ばかりはお手上げだ
document.getElementById(IdName).style.backgroundColorならうまくいったんだが
面倒だが id を別々に割り振って for文で対処できるようにするとか
<style type="text/css">
div.list {
background-color:yellow;
margin: 1em;
}
</style>
<script type="text/javascript">
function onList (){
document.getElementByTagName("DIV").style.backgroundColor = "red";
}
</script>
<div class=list name=list onMouseOver="onList()">List1</div>
<div class=list name=list onMouseOver="onList()">List2</div>
<div class=list name=list onMouseOver="onList()">List3</div>
こうしてみましたが、これでもエラーでした。
使い方としては、onMouseOverでそのリストに色をつけ、マウスを動かしても色はついたままにしておきたいので、
onMouseOutは使いません。
他のリストにonMouseOverしたときに、そちらのリストに色を移したいので、
onMouseOverしたとき、一旦全てのリストの色を戻してから、その固有のリストだけに色をつけたいです。
上のスクリプトよりもっと効率的な方法がありましたらご教授ください。
ul要素を使うとNameが使えるんですね、なるほど・・・。divのままでは無理でしょうか。
>>369 <script type="text/javascript">
function onList() {
var x, i;
x = document.getElementsByTagName("*");
for (i = 0; i < x.length; i++)
if (x[i].className == "list")
x[i].style.backgroundColor = "red";
}
</script>
>>369 どういうエラーが出てるかちゃんとチェックすれ。
>>2 は読んだのか? それぞれの関数が何をやるのかも
リファレンスで勉強すれ。全部おんぶにだっこのつもりなら
放置決定だぞ。
377 :
373:2005/05/11(水) 12:03:02 ID:???
>>374でいけてます!すごいですね!
これで上手くいきそうです、ありがとうございました。
ところで、getElementでぐぐってみましたが、詳しくてわかりやすい説明ページが見つかりませんでした。
お薦めのサイトがありましたら教えてください。
>>374-376 全部DIVだったらgetElementsByTagName("DIV")でよい。
ともかく
>>373 >>369 の関数名スペルミスの連打
(...Elements...の「s」が抜けてる)は自分で気付くべき。
エラー内容読んでない証拠だろ、2度と来ないで欲しい。
リファレンス本を持っておくのが良いよ、やっぱあると便利
リファレンス本は2冊持っているんですけど、両方ともgetElementについて書いていないんです。
新しい関数なのでしょうか。サイトもあまり無いようで、まだ詳しいところが見つかりません。
ワロスw
>>381 発行日を見てみな。俺のは平成15年6月ので、getElementsByName ByTagName について
書いてある。古いのだとないかもな。こういうのって時が経つにつれて仕様が変わるものもあったり
追加されていくものもあるし、本屋で目を通すのも必要になるかもね
>>381 そんな役に立たないもの捨てろって。DOM2の載ってないものはゴミ。
新しいって…既に出てから5年くらいたってるだろ。
英語の名前の検索は部分文字列じゃだめだってば。「getElementsByName」
と「getElementsByTagName」で検索しろ。「Elements」の「s」が抜けたら
無意味だからな。あと最新情報はMS/Mozillaのリファレンスサイトで確認する。
↓次の質問どうぞ
↑
IEの同ID属性の要素コレクション仕様はム的には非常に便利なんだけどなぁ。
便利なものは標準にして欲しいなぁw
ま、IEの場合はID属性は要素オブジェクト参照変数宣言仕様だからな。
IE専だとdocumement.getElementById()の存在の意味が薄いw
ところで
CSSの個々のエレメントのclass指定のグループ化とスクリプト上の操作グループが一致しない場合はどうする?
なんかめんどくせー
>>387 何のためにclassをつけてるわけ? DOMでスタイルシートをいじれば
ループなんか使わなくても同じclassのもののスタイルを一斉に変更
できるだろ?
IEが糞。
IDが複数だと逆に困るっつーの。
http://〜〜/〜.html#id とかが複数になるだろ。
だまって class にして、自分で getElementsByClass でもつくればいいじゃん。
> ところで〜
何言ってるかワカランww
JSでstyleを直接指定するよか、classを追加(あるいは変更)させて、
CSSにそのクラスのスタイルを指定するのがいいのではないかと。
そんなことでぐちぐち言うやつは、進学クラスには所属できん
普通科クラスで就職活動してろ
「そ、そんなぁ〜!」
やる気が下がった。
不眠症になった。
弱気になった。
393 :
387:2005/05/11(水) 15:08:29 ID:???
スマソ。documement(○)→document(×)
じゃ、お詫びにw複数の要素が共通の1つのイベントハンドラ関数で処理したい場合はこうかな?
<HEAD>
<SCRIPT type="text/javascript">
function ObjDIV_onclick(ObjElement){alert(ObjElement.innerHTML);}
function ObjP_onclick(){alert(this.innerHTML);}
window.onload=function(){
for (i=0;i<3;i++) {
var ObjElement=document.createElement("P")
ObjElement.onclick=ObjP_onclick;
ObjElement.innerHTML="押せ" + (i+1);
document.body.appendChild(ObjElement);
}
}
</SCRIPT>
</HEAD>
<BODY>
<DIV onclick="return ObjDIV_onclick(this);">DIV1</DIV>
<DIV onclick="return ObjDIV_onclick(this);">DIV2</DIV>
<DIV onclick="return ObjDIV_onclick(this);">DIV3</DIV>
</BODY>
IE専だと、window.event.srcElementが使えたり、要素名以外にも異要素でも同IDの要素コレクションを廻してイベントハンドラ振れるんだけどさ。
だからさあ、アクセスしたいものに「規則的な」IDを振っておけば
for(var i ...) document.getElementById('x' + i)...
とかで済むわけじゃん。何がなんでもIE専を宣伝したいのならご勝手に。
目的に応じて分かりやすいソースを書く、それで良いんじゃねーの?
効率の良いアルゴリズムも重要だけどさ
質問してきた人に教えるわけだから、そいつが理解できる形で答える
質問してきた人が適当に書き換えができるものを書く、それも重要になるんでは?
なんだかんだ言って、ブラウザの設定でJavaScriptをオフにしていたら
機能しませんから、残念!
ドキュメメッw
良い子のみんな、正しいスペルはdocumentです
>>388-392 りょーかい。ありがとでした。
>>395 それは同意するよ、でも今回の場合、ノード全部なめるって
いうのはどう考えても重たいんだよなあ。CSS側をいじるのが
一番効率良いとして、2番目は
>>394 だと思うんだけどね。
さして説明が難しいわけでもないし。問題は質問者がIDも
NAMEもぐっちゃぐっちゃにしか理解していないってこと、それでも
質問者に合わせるっていうのはなかなか嫌なものがあるわけさ。
398 :
387:2005/05/11(水) 16:23:04 ID:???
387は単発ですw
>>364とは別人ですからぁ。
ム的にはIE専のがスマートす。
また怒られるかな?w
JScript.NETをIEで使いたいと言うと怒られかなwいや笑いそうなwまたねー
セキュリティフリーにするとできるよんww
でも勉強になったよーアリガトでした。
質問です。
ある画像にonMouseoverする度に、画像2、画像3、画像4 と変わるようにするには、どのような仕組みが考えられますか?
別に怒ったりはしないよ。ただ初心者にIE専をそうと知らせずに
教え込むのは悪いだろ。IE専だとひとこと断ればいいんじゃない?
(もちろん同じことがクロスグブラウザでも同程度の簡単さで
書けるならわざわざIE専を選ぶ必然性はないと思うけど。)
IE専がスマート?それは場合によるし主観の相違もありそうだな。
>>399 <script type="text/javascript">
var count = 0, imgs = ['img1.png', 'img3.png', 'xxx.png'];
function chg() {
document.images.名前.src = imgs[count = (count+1) % imgs.length];
}
</script>
とかして
<img name="名前" src="最初の画像" alt="説明" onmouseover="chg()">
テストしてないけど。
IE専ってだいたいはWin IE専でMac IEも捨てられてたりするんだよね、
だって持ってなくてテストできないんだもの。Macで見れないページ
作って満足っていうのはイクナイと思うけどね。Win IE + Gecko (Moz
かFirefox)でテストしてればMacでもIE、SafariのどっちかではOKだろ。
もっとも洩れはMacでもMoz派だけどね。おお、Web製作板っぽい話だ。
>>401 すばらしい。できました。ありがとうございました。
404 :
Name_Not_Found:2005/05/11(水) 18:28:46 ID:76PPuseV
disabledな要素のフォントの色変えるのはどうすればいいのか
誰か知らん?
既出だったらスマソ
<div id="test1" disabled onclick="document.getElementById('test1').style.color = 'red';">test</div>
変化しねぃよ・・・orz
405 :
404:2005/05/11(水) 18:36:17 ID:???
ぅぉすまんageちまった
404て不吉だなぁ ぉぃ...
406 :
GreatFixer ◆ASWqyCy.nQ :2005/05/11(水) 18:49:54 ID:7SxwcSO/
JavaScriptで、
function f(i){}
などと書くとき、
var iをどこかに書いた方がいいのですか?
それともvar iはどこにも書かない方がいいのですか?
>>404 <div id="test1" disabled onclick="document.getElementById('test1').disabled=false;document.getElementById('test1').style.color = 'red';">test</div>
>>406 絶対に書くべきでない。「var i;」と書くことはそれがローカル
変数(関数の中の場合)かグローバル変数(関数の外の場合)である
と宣言すること。しかしiはパラメタなわけだからどちらも違う。
>>404 そもそもHTML的にはdivにはdisabledなんて属性ないよな…
ごそごそ…IE専だね、洩れ知らね。
ページを去る時に次にどのURLに行こうとしているのかを知りたいのですが、取得する方法はないでしょうか?
簡単なアクセス解析のためで、さすがにユーザが直接アドレスバーに入力するURLは取得できないと思うのですが
<A>リンクで飛んでいく場合のみでいいので取得したいと思っています。
411 :
404:2005/05/11(水) 19:53:23 ID:???
>>407 disabled解除したらそりゃ変わるだろうがよ。
>>408 んじゃtextareaならどうよ。
IE専認定できるほどの腕なら即答できるんだろうな?
divにしたのはtextarea打つのがダルかっただけだ
適時脳内補完しる
412 :
404:2005/05/11(水) 20:03:26 ID:???
orz 挑発的な文になってもうたスマソ
textareaってどうしてもtestareaになるんだよ。
それはともかく知ってる奴いないのか?
>>404 そもそもなんでdivにdisabled使うのかわからん。
contentEditableでも使ってるのか?
textareaの場合、ただ単に書き換えられたくないというだけなら
disabled使うまでもなくreadonlyで十分だと思うが。
414 :
GreatFixer ◆ASWqyCy.nQ :2005/05/11(水) 20:15:29 ID:7SxwcSO/
Re:
>>408-409 どうもありがとうございました。
もう一つ質問です。JavaScriptにはVBSのOption Explicitのような、あるいはFORTRANのIMPLICIT NONEのような機能は無いのですか?
>>404 W3でdisabledの仕様を読んで出直して来いや、このクズ
417 :
416:2005/05/11(水) 20:20:42 ID:???
orz 挑発的な文になってもうたスマソ
418 :
GreatFixer ◆ASWqyCy.nQ :2005/05/11(水) 20:20:52 ID:7SxwcSO/
419 :
404:2005/05/11(水) 20:38:11 ID:???
>>413 別に実用の為に聞いてるわけじゃないのさ。
片手間にやっててふと疑問になっただけだ。
>>416 ワロタw
漏れが悪かったお謝ればいいんだろ
仕様はこの前見たんだけどdisabedの色は実体が何処に有るか判らんかった
漏れに懇切丁寧に教えやがれ。
orz 挑発てk(ry
420 :
416:2005/05/11(水) 20:41:30 ID:???
>>419 すまん、適当に書いただけだ<w3。
実際disabledは、一般にstyleオブジェクトを無効にするために使われるので
多分styleをいじって色を変えることは出来ないと思われます
422 :
404:2005/05/11(水) 20:49:10 ID:???
>>420 >一般にstyleオブジェクトを無効にするために使われる
Σ(゜д゜) マジデ!?
んじゃ「無理」でfaじゃん?
あいにく惨事には興味が無いんでね
質問です。
このスクリプトでIEではOKなんですが、NN7でテストすると エラーにはなりませんがonMouseoutの挙動が不安定です。
書き方が悪いのでしょうか? 安定させる方法があれば教えてください。
<script type="text/javascript">
function showMenu(){
document.getElementById('pulldownMenu').style.display = "block";
}
function hideMenu(){
document.getElementById('pulldownMenu').style.display = "none";
}
function onList(obj){
obj.style.backgroundColor = "blue";
obj.style.color = "yellow";
}
function outList(obj){
obj.style.backgroundColor = "yellow";
obj.style.color = "blue";
}
</script>
<div onMouseover="showMenu()" onMouseout="hideMenu()">pulldownMenu</div>
<div id=pulldownMenu onMouseover="showMenu()" onMouseout="hideMenu()">
<div class=menulist onMouseover="onList(this)" onMouseout="outList(this)">メニュー1</div>
<div class=menulist onMouseover="onList(this)" onMouseout="outList(this)">メニュー2</div>
<div class=menulist onMouseover="onList(this)" onMouseout="outList(this)">メニュー3</div>
</div>
>>424の上に追加
<style type="text/css">
#pulldownMenu {
display: none;
}
div.menulist{
background-color:yellow;
color: blue;
width: 10em;
}
</style>
426 :
404:2005/05/11(水) 21:28:04 ID:???
むりぽ orz
識者が確実な情報を提示することを期待しよう
今日も無駄な一日を過ごした。。
そういやcontentEditableってmozには永年未実装なのな。
それなりに便利なのだが・・・
>>424 マシンを変えて検証しる。スペックの問題じゃないのか。
突っ込みどころは腐るほどあるが。
>>424 挙動が不安定って何?いきなりハードディスクがガリガリ音を立てるとか?
マシン変えて検証してみました。似たような不安定な挙動をしました。
メニュー1のonMouseoutだけ効かないで残ったり、
メニュー2だけ効いて、1と3だけ残ったりします。
とりあえず突っ込んじゃってください。
>>428 とりあえず、そういう不安定さを解消するには、各項目はonmouseover
だけを使用し、ある項目のonmouseoverでその項目をhighlightすると
同時に他の項目すべてをunhighlightする、とかどうかな。ちょっと
面倒になるけどさ。
>>429 それでNN7でもばっちり安定しました。ありがとうございました。
いっそイベントの発生する順番まで仕様で決めてくれたらねぇ
関係ないけど、昨日あたりから2ちゃんねるでJavascriptエラーが出ているね(IE)。
>>432 お前が引用したその文章をどう読んでも、
「dimmedなelementのstyleを変えることが出来ない」
と書いてないのだが
偉そうに言うのはいいけど、自分こそ仕様の読み方を勉強しような。
というか、そのページにもっと他に効果的な引用文あるだろ、もう一度探してきな
>>410 スルーな話題だっけ?w 一応簡単に答えておくよ。
<script type="text/javascript">
function page_move_set () {
var anch = document.getElementsByTagName('A');
if (!anch) return;
var anch_length = anch.length;
for (var i = 0; i < anch_length; i++) {
anch[i].onclick = page_move_get;
}
}
function page_move_get () {
alert(this.href)
}
window.onload = page_move_set;
</script>
<ul>
<li><a href="
http://google.com/">Google</a></li>
<li><a href="
http://yahoo.co.jp/">Yahoo</a></li>
<li><a href="
http://yagoohoogle.com/">YaGoohoo!gle</a></li>
</ul>
436 :
432:2005/05/12(木) 00:29:52 ID:???
>>434 ああ書いてないな。
というか実際変えることができるし
color以外は変えたらすぐ表示に反映されるからな。
俺が示したのがお前にとって
役に立たないものだというのはわかったから
後学のために「他に効果的な引用文」というのを教えてちょ
俺にはどうしてもわからんから。
437 :
Name_Not_Found:2005/05/12(木) 02:45:30 ID:SPwkdgjw
横レスだが
If an element's disabled property is set to false but it is contained within a disabled element,
it cannot override the disabled state of its container.
こっちのほうが適切じゃないのか。
438 :
326:2005/05/12(木) 03:51:39 ID:???
>>354 1日遅れだけどspecial thanx!!
書く人が書くとスッキリするね。センスないわオレ・・・
439 :
354:2005/05/12(木) 04:09:29 ID:???
354だけど自分もセンスないと思う。
自己分析では中級者くらい。
昔はもっとしょぼいコードしかかけなかった。
JavaScript はソースがどこにでも転がってるから
学ぼうと思えば簡単に学べる。
誰もが通る道。スキルが向上するかは自分次第。
ガンガレ>326
とりあえず、第三者が見てもわかるような、わかりやすいコードを心がければ、自然にスマートになっていくと思う。
441 :
432:2005/05/12(木) 04:48:39 ID:???
>>437 うーん、そもそも
>>404が聞いてたのはdisabledな要素の色が変えれるかだから
disabledな要素の子要素に関しては関係ないと思ったんだけど……
「仮にdisabledな要素Aの子要素でdisabled = falseな要素Bがあれば、
要素Bの色を変更することで見かけ上Aの色を変更したように見せられる。」
↓
「実際はdisabled = trueな要素の子要素がdisabled = falseな状態になることは
ありえないからそういった方法でAの色を変更したように見せることはできない。」
↓
「Aの色を変更できないことを示すためには"... it cannot override the disabled state
of its container."の部分を引用すればいい。」
ということか?
まあ本人に聞かなきゃわからないか。
442 :
Name_Not_Found:2005/05/12(木) 10:03:52 ID:LC11Pfsk
JavaScriptで作った棒グラフ(gif画像の幅で表示)を数えて、
グラフは何本と表示させるコードを
作りたいのですが、どのように書けばいいでしょうか。
(countを使わない)
環境
Win2000
IE 6.0
>>442 その質問文で回答が得られると思う方がどうかしてる。
要点を抜き出したHTMLを貼らないと。(長ければどっかに
アップしてリンク。) countを使うって何???
よう分からんけどGif画像の幅で長さを決めているから
1つの棒に対してgif画像は1つなんでしょ?
だったら要素の数を取得できる形に持っていけば良い
>>442-444 なるほど、じゃ画像がそれだけしかないのなら「document.images.length」
でいいわけかな? それをどこに表示させたいって? なぜ(本来グラフの本数
を決めているはずの)変数countを使わないという制約があるわけ?回答者に
納得が行くだけの情報を出せって。
>>445 同じ日本語を使ってるのに、どうしてこうも意味が伝わらない文章を書けるんだろうか
447 :
442:2005/05/12(木) 20:30:36 ID:LC11Pfsk
このコードを元にグラフの本数を数えて表示できるようにしたいのですが
<SCRIPT LANGUAGE="JavaScript">
var R,S,T,n,w;
R=10;
for( n=10; n<=50; n=n+2 )
{
S=n/10;
T=Math.Pow((S-3),3)-(2*R+20)*(S-2)*(S-1)+400;
w=Math.Round( T )
if( T>=400 ) w=400;
if( T<=0 ) break;
if( 100<T && T<=400 ) document.write("<IMG src='bluebar.gif' height=16 width=",w,">")
else document.write("S=",S,"のとき",T,"<BR>");
}
</SCRIPT>
bluebar.gif→16×16,(0,0,255)
redbar.gif→16×16,(255,0,0)
>>447 1本だけ棒グラフを書く関数を作って、それを本数分コールすりゃいいんでねーの?
449 :
442:2005/05/12(木) 20:53:44 ID:???
>>448 このあとRの値を変えて動作させるので
それぞれ本数が分からないという前提でやるのですが
>>447-449 やっぱり分からん。カウンタを1つ用意して、IMGをwriteするときに
1ずつカウントを増やすとかじゃいけないの?
451 :
Name_Not_Found:2005/05/12(木) 21:25:50 ID:E3e6PPnk
452 :
442:2005/05/12(木) 21:26:24 ID:???
<SCRIPT LANGUAGE="JavaScript">
var R,S,T,n,w,c1,c2;
R=10;
c1=0;
c2=0;
for( n=10; n<=50; n=n+2 )
{
S=n/10;
T= Math.pow((S-3),3)-(2*R+20)*(S-2)*(S-1)+400;
w= Math.round(T)
if( T>=400 ) w=400;
if( T<=0 ) break;
if( 100<T && T<=400 ) document.write("<IMG src='bluebar.gif' height=16 width=",w,">");
c1++;
else document.write("<IMG src='redbar.gif' height=16 width=",w,">");
c2++;
document.write("S=",S,"のとき",T,"<BR>");
document.write("青,c1,"本<BR>");
document.write("赤,c2,"本<BR>");
document.write("合計,c1+c2,"本<BR>");
}
</SCRIPT>
こうしてみたのですが、エラーがでます
どこに構文エラーがあるのでしょう
> どこに構文エラーがあるのでしょう
はぁ? おまえ、デバッグの仕方すら知らないの?
>>453 エラーがある行と文字が表示されているから場所は分かるが
エラーがあるように見えない
>>452 まず
>>2 を見れ。エラーがどの行で出ているかはアンタにしか
分からん(この上に何行HTMLがあるか分からないから)。それで
エラーの種別は構文エラーなのね?
456 :
Name_Not_Found:2005/05/12(木) 21:47:51 ID:LC11Pfsk
いい忘れたけど
これで全部のコード
>>456-457 ああ。「if(...) 文; else 文;」はそれぞれの「文」が1つでないと
いけない。複数ある場合は「if(...) { 文; 文; … } else ...」
のように「{}」で囲んで1つにまとめないとね。
459 :
Name_Not_Found:2005/05/12(木) 21:58:05 ID:LC11Pfsk
>>458 dクス
15行17文字目は直ったが
24行29文字目に')'がありませんと表示される('A`)
>>459 もっかい全部貼るように。しかし「()」の対応なんだから自分で
マーカペンでチェックすりゃ済むような気もするがね。
461 :
Name_Not_Found:2005/05/12(木) 22:02:15 ID:LC11Pfsk
>>460 <SCRIPT LANGUAGE="JavaScript">
var R,S,T,n,w,c1,c2;
R=10;
c1=0;
c2=0;
for( n=10; n<=50; n=n+2 )
{
S=n/10;
T= Math.pow((S-3),3)-(2*R+20)*(S-2)*(S-1)+400;
w= Math.round(T)
if( T>=400 ) w=400;
if( T<=0 ) break;
if( 100<T && T<=400 )
{
document.write("<IMG src='bluebar.gif' height=16 width=",w,">");
c1++;
}
else
{
document.write("<IMG src='redbar.gif' height=16 width=",w,">");
c2++;
}
document.write("S=",S,"のとき",T,"<BR>");
document.write("青,c1,"本<BR>");
document.write("赤,c2,"本<BR>");
document.write("合計,c1+c2,"本<BR>");
}
</SCRIPT>
>>461 「document.write("青,c1,"本<BR>"); 」だけど、「"」が3個
しかないっていうのはおかしいと思わないか?
463 :
Name_Not_Found:2005/05/12(木) 22:19:17 ID:LC11Pfsk
>>463 だからー! それは合計とか出すdocument.writeがループの中に
あるからだろ。あんたものすげードシロートだったんだな…
>>463 Java始めてから2週間。
実質大学の講義が週1だからほとんどテキスト見ながらやってる
おいおい。アンタが書いてるのはJavaじゃないんだ。
>>1 も
読んでないのかよ。
なんで?JavaScriptはJavaのサブセットだから略して間違いじゃないよ?
スーパーセットじゃないんだから。
>>468 ほー。JavaScriptがJavaのサブセットだって。
そんな大嘘、どこに書いてあったか教えてくれ。
以降ヨガスルーで。
ここでエラそうに回答している人がサブセットの意味も知らないとは、いやはやw
冗談ですよね?知らずに略すなとかいう地方ルールをこさえたんですか?
Javaに精通する前に、日本語のお勉強をしまちょうね〜ボクちゃんたちwwww
「int i = 0;」というコードは正しいJavaのコードだが
JavaScriptでは構文エラー。
「var i = 0;」というコードは正しいJavaScriptのコードだが
Javaでは構文エラー。
よってJavaとJavaScriptのどちらも他方のサブセットではない。
証明おわり。
釣りのつもりなんだろうが
質問スレで適当なことを言うのは
迷惑がかかるからやめるべき
>>1 に書かれてるんだから終了。もう何十スレも維持されてるんだしな。
> 実質大学の講義が週1だからほとんどテキスト見ながらやってる
(´-`).oO(偏差値のすごく低い大学なんだろうなぁ…)
だいたいどんな講義であれ週1だから言い訳にはならんなw
つーか大学の講義でプログラムとかの講義受けても、実になった覚えがねぇw
自分で勉強した方が早いよな。
確かに大学の講義だけじゃ大したものは身につかない
俺はif、for、do whileといったものから
配列、バブルソート、乱数発生、ポインタ、関数の定義は習ったが
必要に応じて自分で適当なアルゴリズムを調べないとな
って、質問してんのは
>>442かいな?
妙だがエクセルで作業した方が良くないかとも思ったりするが
問題は偏差値云々よりも、自分の勘違いを絶対視して他人の指摘を
はなから考慮しないその姿勢だろ。自分は初心者で相手は
常連つまりJavaScript歴もはるかに長いと分かってるのにだよ…
どんな大学だってそんな奴がまともに学習ができるとは思わんね。
まあ恥ずかしくて2度と現れないだろうけどな。
481 :
404:2005/05/13(金) 12:01:43 ID:???
>>432 disabledはmsの方の資料見ねばならんかったのか。
必至こいてhtmlの資料探してたよ。
自分の無知を晒したところでName_Not_Foundに戻るぜ。
さんくす>>all
482 :
Name_Not_Found:2005/05/13(金) 12:03:44 ID:/qdyTB4/
今話題の
iframeによるアクセス空稼ぎですが、
iframe(あるいはフレーム)で呼び出されているか否かを
JSで判定するにはどうすればいいでしょうか?
>>482 そういうのは「フレーム脱出」の判定に使われるんで定石だよ。
「if(top != window) フレーム内にいる」
なるほど!topと比較すれば可能ですね
ありがとうございました
485 :
Name_Not_Found:2005/05/13(金) 17:13:53 ID:S4DH4zq1
質問です。
confirmメソッド使ってダイアログボックス開いた時に
フォーカスを「キャンセル」のほうにあてたいのですが、可能なんでしょうか?
また可能ならやり方を教えていただけませんでしょうか。
>>485 なんか既視感が…
JavaScriptじゃ無理。
>>485 無理っぽい。小窓を開いてそこにOKとキャンセルのボタンを表示させて対処するのはどうかと
住人が驕り高ぶるスレ〜それがJavaScript質問スレクオリティ〜
低脳が煽りを入れるスレ〜それがJavaScript質問スレクオリティ〜
ホームページを、ちょっと良くしていく工夫。
ホームページの中にも、「こうすればもっと楽しくなるのに」とか、「こんなものがあれば便利なのに」
なんて思うことが、まだまだあるはず。JavaScript質問スレは、そんな発想を大切にしたいと考えています。
インターネットライフの中で生まれるちょっとしたアイデア、その一つひとつをカタチにして積み重ねていくことで、
ウェブのクオリティを高めていきたいと考えます。自由な視点でホームページを見つめ、さまざまなサービスを
生み出していきたい。ホームページを、ちょっと良くしていく工夫。JavaScript質問スレは、ホームページの
新しい価値を皆さまに提案しつづけます。
それが、JavaScript質問スレクオリティ。
美しい時代へ──JavaScript質問スレ
パンにはやっぱりネオピュッピィルレ!!
なんでもいいから、まっとうな質問どぞ。
厨なのは煽りでもスルーでも好きなように。
改行を含むデータを変数にする方法はありますか?
テキストエリアに入れるか DOM でテキストパートを取り出す
//WIndowsの場合 他はシラネw
var sCRLF="\r\n";
//innerText(IE専かw)などでは<BR>に自動変換されるハズw
>>495 できれば外部ファイルに置きたいんですが、JSで外部ファイルを読むのは無理らしいので
スクリプト内に変数として置くつもりです。
>>496 それ面白そうですね、ちょっとやってみます。
>>497 なるほど・・・
498が錯綜しているぞ誰か教えてやれ
501 :
Name_Not_Found:2005/05/14(土) 12:35:11 ID:wOQyWvlm
送信側.html
<form action="./Receive.html">
<input type=text name=box>
<input type=submit value=" 送 信 ">
<input type=reset value="リセット">
</form>
受信側.html
<script>
val = document.location.search;
val = val.split("=");
val = unescape(unescape(val[1]));
if (val) val = "送信されたデータは<h1>" + val + "</h1>です。";
else val = "送信されたデータはなにもありません。";
document.write(val);
</script>
送信側の
<form action="./Receive.html">
を
<form action="./Receive.html" method="POST">
とした場合、受信側はどうやって送信データを取得すればよいのでしょうか?
>>501 method="POST"の場合、CGIを使わずにデータを受け取ることはできない。
503 :
Name_Not_Found:2005/05/14(土) 13:12:15 ID:wOQyWvlm
>>502 レスありがとうございます。
やっぱりダメですか・・・
Gateway Timeout
>>501 Javascriptで、受信側のアンカーなり入力テキストなりを
書きかえるようにするのじゃダメなの?
<input type="buttun" value="送信" onClick="piyo(this.form.text)">
とかでもらって、
受信側HTMLのinnerHTMLなんかを換えればいいのでは?
受信側HTMLが、権限の無いところにあるなら知らない。
エロイ人どうぞ。
>>505 うーん… それをやるためには、送信側と受信側のページが同一鯖で、
なおかつ両方のページが同時に開いた時点がないと駄目だよね。
たとえば別窓に受信ページを開いて書き込む?そんなのが元質問者
的に許容できるかどうかはちょっと疑問な気がする。
ここはむしろ素直にクッキーでデータ渡すとかの方がはるかにマシ
ではないのかな。これも同一鯖という条件になるけどね。
507 :
505:2005/05/14(土) 16:37:19 ID:???
function piyo(dt){
window.open("receiver.html","受け手");
document.write(dt);
}
流れ的にこんな感じ。これじゃ動かないと思うんであしからず。
JavaScriptだとできないことが多いんで、近頃はPHPばかりになってしまった。
>>508 サーバ側とクライアント側はもともと役割が違うからね。
別にサーバ側の処理で足りてるんならいいんじゃないの。
さっとメニュー出すとか動かすとかローカルだけでチェック
とかそういうことに使うためのクライアント側スクリプトでしょ。
>>507 だから別窓開いて置いといていいのなら当然そうやればできるが
(document.writeするというのは冗談ポイだけどね。FAQ
>>3参照)。
一般的に言えば別窓はうざいが、それは元質問者が決めることだな。
510 :
Name_Not_Found:2005/05/14(土) 16:57:30 ID:B5Z/ojdh
今開いているwindowから別のwindowを開くんだけど、
別のwindowが開いている間もとのwindowを触れないようにすることってできますか?
つまりモーダルウィンドウにしたいのですが。
>>510 うーん、あんまり使いやすくないだろうと思うんで勧めないけど、一応
window.onfocus = function() { window.blur(); };
なんていうのをやるとフォーカスが入らなくなるよね。どっちかというと
その別窓にフォーカスを当てるべきなんだろうから、
var w = window.open(...);
window.onfocus = function() { w.focus(); };
のがいいかも。で、その別窓が閉じるときには「window.onfocus = null;」
を実行してクリアしないと大迷惑なんで注意。
512 :
501:2005/05/14(土) 19:11:22 ID:wOQyWvlm
>>505,506
レスありがとうございます。
別窓はブロックされて開けないこともあるので・・・
とりあえずサーバー側(JSP)で対処することにしました。
513 :
510 :2005/05/14(土) 19:49:32 ID:a8tLVpX1
>>511 ご回答ありがとうございます。
結構無理かな、と思っていたんですがその方法ならモーダルになりますね。
本当にありがとうございました。
質問される人、質問のときはageてくれていいんですが、
以後はsage進行でよろしく。ちゃねらーとしてはsage進行
くらい勉強してよね。
515 :
Name_Not_Found:2005/05/14(土) 21:16:48 ID:66P2ryrR
ラルクなどミュージシャンのサイトにあるような
アクセスすると強制的に縮小されたウインドのサイズが変わったり
ページに移動した直後少し画面が震えたりするのはスクリプトを使っているからですか?
> アクセスすると強制的に縮小されたウインドのサイズが変わったり
うざいスクリプトの代表だな。
517 :
Name_Not_Found:2005/05/15(日) 05:18:02 ID:eTrk2MV+
ageての質問ご容赦。
姉妹サイトの新着情報などを自サイト上で紹介したいのですが
できれば自動・半自動化できればと考えています。
たとえば姉妹サイトで hoge.com/2005/0514news.html のように日付が
つくページを
自サイトで 0514の部分だけjavascriptで自動的に変換するというのはできるんでしょうか?
何を何に変換するのかわからないんだが
>>517-518 確かに訳の分からん日本語だ。とりあえず2つ解釈を思いついた。
でも日本語の不自由な質問は煽られるだけでいいことないと思え。
(1) 姉妹サイトで時々日付のつくURLのページが追加されるので、
それに対応して自分のページにリンクが追加されるようにしたい。
→別鯖だろうからJavaScript側でページの存在をチェックするのは
無理。そういうのはサーバ側でやるしかない。
(2)姉妹サイトで毎日日付のつくURLのページが作られるので、
自分のページからのリンクを日付(と固定文字列)から自動生成
したい→日付等はDateオブジェクトで取れるからそれと文字列
を連結してURLを作ってリンクを挿入することで可能。
さあどっちかな。またはどっちでもないか?
>>517 iframe で日付の付いたページを読み込ませたいってことじゃないかな?
JavaScript でできるけどサーバサイドでやった方が無難。
さてさて、DHTML以前に
変数、文字列などのム上の基本から教えないとダメな気が。
ポンとコードソースを出しても分かるレベルとは思えない。
ましてやサーバーと連携するまで…(省略)
結局、そこができてなくてこうできませんか?っ感じ。
その次に他の言語は多少かじっていて、ムの基本はなんとなく分かるが
DHTMLリファレンスに目を通さない、リファレンスがどこにあるのかさえしらない、
英語だったらなおさら読みたくないで伸びないとか。
まったくのぷろぐらム初心者には2重の敷居があるのだね。
と便所でつぶやきw
スルーしてね☆
>>521 あんたのがよっぽどうるさいんだが。さほど難しくない
質問の可能性もあるんで、まあ質問者の再質問を待ちたいところ。
>>521 頭悪いなら無理に回答しなくていいですから。
526 :
521:2005/05/15(日) 14:01:17 ID:???
おいおい、閑古鳥だとオレに矛先を向けるのかw
閑古鳥だと妙に優しくなる雰囲気はアレだからさw
527 :
521:2005/05/15(日) 14:10:47 ID:???
function CheckKeta(vtValue,nKeta){
var sZero="",sValue=String(vtValue);
var nZero=nKeta - sValue.length;
if (nZero > 0){
for (i=0;i<nZero;i++){sZero += "0"};
return (sZero + sValue);
}else{
return (sValue.slice(-nZero))
}
}
var ObjDate=new Date()
with (ObjDate) {
var sDate1=getFullYear() + "_" + (getMonth() + 1) + "_" + getDate();
var sDate2=CheckKeta(getFullYear(),2) + CheckKeta(getMonth()+1,2) + CheckKeta(getDate(),2);
alert(sDate1);alert(sDate2);}
//悪評つけられそうなんで、何もしないやつは黙ってろw
//日付文字列を作成するサンプルだけやってやるwJScriptじゃないと動かないかもなw
//CheckKeta関数は第1引数にチェックする値、第2引数が指定桁数で、指定桁に足りない場合は頭に0をつけ、変換した文字列を返す
528 :
521:2005/05/15(日) 14:13:37 ID:???
ちゃちゃっとやったので、
読めないとか、読む気しないとか、
動かないとかw
難癖つけるなよ?w
元質問者の意図が分からないうちから回答したくて
仕方無いみたいだねえ、うるさいから黙ってて欲しい。
まっとうな質問がなくて閑古鳥が鳴いてるのならそれは
そのままでいいから。無理にゴミで埋めないでくれ。
オレは言っただろう?放置な内容だと。
うるさいのはスルーできないおまえらだろが。
コード的にどうとか、そういうこのスレの本質をどうでなく
自分がスレの中心だとも言いたいのか?
回答はしていない。
誰がやろうと、同じ結果を出せるなら
知識は吸収できるなら構わないだろうが。
オレはもう知識あります。他人に教授してもらうことはありません的な
態度のやつはコードだけシコシコ書いてろ。
連投
本質を忘れ、排他的になってるぞ。
それが方針なら何も言わない。
あげ
はっきり言って、このスレは質問者と常連のレベル差はすごく
開いてしまっている。しかも常連どうしで勉強になるような高水準
の質問は非常にまれ。だから、質問者が来たときにその質問者の
学習を促すようなうまい教え方を競うスレになっていると思う。
その点で
>>527 みたいに要求もされてないのに平凡未満のコード
を貼るというのは嫌われるわけさ。まあ質問が来たときにスマート
にやってくれ。それができないなら黙っていて欲しい。
さすが良スレ
濃いキャラクターが揃ってるなw
>>527 悪評?それどころか、あなたはかなり馬鹿な初心者ですね。
> for ( i = 0;
この i がスコープの外で定義される。
> with (ObjDate) {
with は使うな、とヴェンダ自身が言っている。
そして
>>527 は、with 内で行ったり来たりを繰り返す典型的な悪例。
with使った書きかたってどう書いたらいいかわかんないよなあ。
var とか宣言したら、その with(obj) のオブジェクトにならないのか、とか、
なんでそのオブジェクト以外の変数とか関数とか普通に使えるのか、とか。
面倒くさくて使ったことなかったよ。
数十枚の画像をサムネールで表示しているページがあり、そのそれぞれの画像にフルサイズ画像へのリンクをはり、
別ウインドウで表示させたいと思っています.
これまでは、画像が数枚だったのでそれぞれに別なページを準備していましたが、数十枚となると、ちょっと...
JavaScript で解決しようと考えました. (ここがそもそも間違っているでしょうか?)
フルサイズ画像のパスと、開くウインドウのサイズを引数で渡す関数をつくってリンクから呼ぶことにし、関数は次のように
してみました.
var viewerW
function viewer(image_url,hsize,vsize)
{
viewerW=window.open("","new window","適当な属性");
viewerW.window.resizeTo(hsize,vsize);
setTimeout(function(){imageW.document.write("<p align='center'><img src=image_url></p>");},0);
}
リンク部分では、
<a href="javascript:viewer('image1full.jpg',600,400)"><img src="image1.jpg"></a>
のようにして呼んでいます.
これでいろいろ考えた結果ですが、画像が表示されません.
画像のパスが引数でうまく渡っていないと思っていますが、そういうことでしょうか?
手詰まりなので、解決策をお示しいただけませんでしょうか.
>>537 画像のパスが渡ってないかもと思うのなら、なんでその無名関数の中に
alert(image_url)を挿入して確認しないんだ?それはそうと気付いた問題:
(1)viewerWとimageWという変数名は実は同一でないといけないのでは。
(2)文字列リテラルの中にただimage_urlと書いてあったらそれは自動的に
変数に置き換えられるわけがなく、書き出された時もそのままになっちゃうだろ。
"<p align='center'><img=src='" + image_url + "'><\/p>"
とするべきでは。
539 :
537:2005/05/15(日) 23:06:25 ID:???
>>538 ありがとうございます.
変数名はスレに書き込む時にミスりました.
img src 〜の部分は、言われてみればそのとおりですね.
残念ながら、ここを直してみましたが、やはり表示されませんでした.
ご指摘の方法で確認してみますと、img_url 引数はちゃんと渡っていましたので、
表示のさせ方に問題があるということで、最初から考え直しました.
結局、表示するページを実体として用意し、これに
<img src="" name="image1"> と、サイズ指定なしの空イメージを作っておいて、
問題の関数から、
setTimeout(function(){viewerW.document.image1.src=image_url;},0);
とすると、うまくいきました.
JAVAScript でなにかしようとする度に、頓挫してます.
私にはまだまだ難しいですね.
ありがとうございました.
>>537 JavaScriptだとメンテが面倒じゃない?
おれならPHP使うなぁ。
>>540 だから用途が違うんだってば。PHPで済むことはそれでいいんじゃ
ないの。
なんかたまにPHP厨が出没するよなw
ここで聞くべきか迷ったが…
JavaScriptによる、template engine とかご存知ないですか?
やりたい事は、サーバクライアント間でXMLでデータをやり取りして、
そのデータを元に、クライアント側で表示する際に、延々DOMで書く手間を省きたい。
ってな所なんですが。
>>543 受け取ったXML(データフォーマットとして使ってるんだよね?)をXSLTを用いて変換、
変換結果のノードを適当な場所に挿入、じゃいけないの?
一度XSLTスタイルシートを書けばそれを使いまわせると思うけど。
IEとGeckoではXSLT周りのAPIが違ったような気がするし
OperaはXSLTエンジンが搭載されてないからそもそも無理、
Safari(というかWebCore)はスクリプトからXSLTを扱うAPIがあるか知らないけど。
>>545 レスどうもです。
ご指摘の通りOperaを切り捨てる結果になるので、XSLTはちょっと。
>>540-541 たとえば今回の場合、PHPのようにサーバ側でやるとすると、
サムネイルのリンク選択→サーバ側からURI GET→IMGタグを
含んだページ返送→ブラウザから画像取得→表示
というステップになる。元々のdocument.writeでページ作る
方法だと
リンク選択→ページ作る→画像取得→表示
というふうに、サーバとの1往復+サーバ内処理がまるまる
削れる。ネットの速さとサーバの重さによってはこの節約は
大きいかもよ。
550 :
527:2005/05/16(月) 08:14:41 ID:???
おはようw
サンプルだと断ってあるので批評は以下のレスが書いた通りw
with内スコープから他へジャンプするのは危険性はあるが、
コード保守者が管理していればいいだけの事。
初心者に回答はしていない。
サンプルで簡略に便宜的に示すため。2通り書いただろが
いちいち、書くとメンドイ、それだけ。
これをコピペして使えとは言っていない。
自分で調べ、とにかく動き、拾える所だけは拾うやつが伸びる。
欠点を見出すスキルがある者ならば、もっと初心者に親身になれ。
洩れが教える時は絶対withなんか教えないね。いいことなんか
何もないぞ。まあ自分のセンスとしていいと思ってるなら勝手
だがここで布教するのはやめてくれ。36スレの歴史でwith勧めてる
奴なんて極少数(アンタだけじゃないの?)
また宗教かよ
脳内テンプレの数が少ないか、更新効かない奴だな、
教えてる?勧めてる?感情が先になって読解力あるか?
押しつけも強制もない。
使える場面で使えばいいだけだ。使えないと判断するならしない。それだけだ
仕様を読み、時と場合に応じて自由に利用する。
「みんながやらない」「〜が言ってるからだめだ」とかじゃ情けないね。
ま、それも個人の勝手。
脳内センスで片付けるのは勝手だが
結果を出すための手段の引き出しは多いほうがいい。
Mozilla啓蒙もアンチIE専もいろんなのがいて結構だが、
自作法以外を叩くだけの
そういうのが中心で居座ってるならスレタイからすればこのスレ、死んでるよ。
で、本道外れたんで逃げw
また宗教論争かよ。ま、with使った回答例に文句ある人はそのつど
言えばいいんじゃないの?
そりゃどの手段をとるかはユーザーの勝手だけど、
初心者としてみた場合、その持ってる引き出しが少ないのだから、
持ってないものを与えられたら、それを使わざるを得ないでしょ?
これから勉強するのに、いい参考書と悪い参考書があって、
悪い方に当たっちゃって、でもそれで覚えちゃって、
後で 「それはよくないよ」 って指摘されて、
参考書よく見たら、その中に 「これはあくまでサンプルです。他の書きかたは自分で調べてね」 と注意書きされてたら・・・。
>>550 も、わかってるなら普通の書きかたすればよかったのにw 管理できてないけどww
ほんとに初心者のこと思うなら、一般の書きかたから教えるべきかと。
でなかったら、両方書くとか。
\e
<input name=aaa value="">
<input name=bbb value="">
とWEBページ内に記述されてて
JavaScriptでname=aaaとname=bbbに自動的に入力する
方法を見たことあるんだけど、どうやってるかわかる方いますか?
>>557 「自動的に入力」ってJavaScript側から値を入れるってこと?
それならその要素にID振って
document.getElementById('ID名').value = '入れたい文字列';
>>557 意味がわからん。JavaScriptでnameをつけるのが、name=aaa or bbbの
valueを入力で変えるのか
inputのtypeは何?button、text、radio、checkboxなんかあるけど
>>563 表示させたくなかったらウィンドウの位置を画面の上に(ry
っつーか迷惑だろうからやっぱダメかと
>>561 動かなくなる原因はおそらく、document.bodyを参照しまくってる
ためではないかな。DOCTYPEをちゃんと入れると標準モードになり、
document.bodyではなくdocument.documentElementが最外側要素に
なる。簡単にいうと、document.bodyを全部documentElementに
取り替えたら動くんじゃないの?もっとも、そういういい加減な
スクリプトに頼るのは極めて危険だと洩れは思うけどね。先頭まで
スムーズにスクロールさせるなんて簡単っしょ?
>>563 JavaScriptではできなかったと思うよ。最初からブラウザを
全画面モードで起動とかならできるんじゃなかったっけ。
>>561 getScrollLeft/Top/Width/Heightのdocument.bodyを参照している部分を
標準モードのときはdocument.documentElementを参照するようにしろ。
わからないことがあったら自分で調べろ。
>>549 おれはPHP厨じゃないけど、画像が増えたときのメンテナンスという点では、ディレクトリ内の
ファイル一覧を作れるPHPのほうが楽ちんかと。
鯖の負荷、ネットワークトラフィックという面ではもちろんJavaScriptが有利でしょうね。
568 :
Name_Not_Found:2005/05/16(月) 18:06:32 ID:gwqwt5Pv
JaVaを使用しているサイトを見ようとすると
見ているWebページが全て閉じて
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d6c20e6, pid=396, tid=1724
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_02-b09 mixed mode, sharing)
# Problematic frame:
# V [jvm.dll+0x820e6]
#
といった内容が書かれたメモファイルがデスクトップに出来るのですが、この状況を打開するにはどうしたらいいのでしょうか?
スレ違いです。
どこで聞けばいいでしょうか
やーふぁ
Javaですね
インターネットオプションでJava(Sun) <applet>に JRE 1.5.0_02 を使用 欄にチェックを入れると
>>568のようになり、
チェックを入れないと灰色になってて見れないんですよね・・
>>570 とりあえずプログラム板のJavaスレの人が一番詳しそうだな。
見てるだけなんだから製作板に来られてもねえ。
>>569 自動でファイル一覧を作るのならもちろんそうだけどね。
ファイル増やしたときにファイル一覧作って配列リテラルに
してJavaScriptに埋めるんでもいいと思うけどな。まあ頻度次第。
>>573 んなこた誰だって分かる。ここは「JavaScript」スレ。
「Java」は扱ってないの。JavaScriptはJavaのサブセットだから
分かるだろとか言い出さないでくれよ(w
すいませんそっちへ行きたいと思います。
スレ汚し失礼いたしました
別窓を表示する際に、画像のサイズに合わせた
ウィンドウを開きたいのですが・・
縦サイズから横サイズに変化させたりできますか?
画像の大きさではなくて、画像プラス20pxとか
そうゆうのなんですが。。
578 :
561:2005/05/17(火) 00:55:14 ID:???
>>565-566 ありがとう。ばっちりいけたっすよ。
厳しい口調だが親切だな、おまいら。
>>577 手順としては
対象となる画像の幅、高さ(width、height)の値を取得
それぞれの値に+20をした値を別窓のウィンドウの幅、高さに指定
>>577 >>579 のでもいいし、
・初めからサイズ指定するなら、
→ <a href="hoge.png" onclick="return image_open(this.href, 220, 320)">
→ function image_open (img, width, height) {
window.open(img, '', 'width='+ width +', height='+ height); return false; }
・画像は開いた後で読み込みたいのなら、
→ とりあえず別窓を開く (window.open で)
→ 画像を読み込み終わり
(img.onload とか img.complete とかで判断
)
→ 画像のサイズ取得 (img.width , img.height)
→ ウィンドウのサイズを変更 (window.resizeTo( width+20, height+20 ))
とか?
追記。当たり前だけど、
resizeTo で指定した画面の大きさは、内側でなく外側の大きさなので、注意だね。
ブラウザやスキンとかによっていろいろ大きさとか解釈違うし。
以前、スクロールバーが出なくなるまで resizeBy して繰り返させてた覚えがあるけど、
あまりイイとは言えなかった。。。
IE以外のブラウザでネスケ、Firefoxだと使えないスクリプトを作ってしまったと気づいたとき
ものすごくむなしさを感じるのだが、対策が見つからん・・・
>>584 独自拡張だらけのIEを開いて作ってるからでは。洩れはMozを
開いて開発し、終わったらIEでチェックしてる。それだと動かない
場合でも手直しが必要なのは少しだけで済む。
>>585 激しく同意だ
IE糞とまでは言わないにしても、
依存しすぎると柔軟なコーディングできなくなるよな...
選択されたテキスト範囲をjsで解除する方法はあるのでしょうか。
>>588 ある。
…あるかどうか質問してるってことは、あると分かったら自力で
調べるつもりなんだよね。見上げた心意気、ガンバレ!
>>589 DOM自体は標準化されていてGecko系でも同じはずだから
MozillaのDOM Inspectorで開発すりゃいいんじゃない?
IE限定であってもGeckoでうごいてはいけないってわけじゃ
ないでしょ? (w
おい、お前ら、ここは質問スレですよ。
別に開発環境の質問だっていいんじゃないの。言語自体の
質問だって「それは言語自体だからム板のECMAScriptスレへ
逝け」なんて言わないわけだしさ。
>>588 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
document.onmouseup = function() {
if(window.getSelection) { // Gecko
var s = window.getSelection(); if(!s) return;
s.collapseToStart();
} else if(document.selection) { // IE
var r = document.selection.createRange();
r.collapse(); r.select();
}
}
</script>
</head><body>
<p>abcdefghijklmnopqrstuvwxyz</p>
</body></html>
>>590 うД`)ヒントぐらいくれよーw
>>594 ありがとぉぅぉぅ
おまい最高だ
質問ついでなんだけど
var s = window.getSelection();
とか
var r = document.selection.createRange();
とか
if文の中にわざわざ一時変数を取るって言うのは何か理由があるのか?
よく見かけるサンプルコードも似た形式が多いが。
そういった慣例なのか、そうするメリットがあるのか
脳貧な俺にはよくわからん
教えてくれると嬉しい。。
意味もなくグローバル変数使うヤツはうんこ
>>596 言わんとすることはわかる
汚染対策ってことだろ
だがdocumentオブジェクトとかがもし肥大化したりしたらどうするんだろ。
グローバル変数のコピーとるだけでボトルネックになったりしないのかなと。
そこは既に考慮の上で開発されているのかな・・・
>>596-597 ローカル変数はdocumentに取られるわけじゃない。スタック上
とか、レジスタ上とか、とにかく有利な場所に取られる。あと
オブジェクトの場合は参照(ポインタ)を保持するだけなんで、
コピーのオーバヘッドとか領域の無駄ということはまずない。
でもそんなことより。局所変数にしておけば、外の変数とは
無関係だとすぐ分かるだろ。人間にとって分かりやすくする
ことが一番大事なんだよ。
質問おねがいします。
画像自体をクリックすると次の写真にどんどん切り替わっていくJavaScriptをさがしてるんです。。。(スライドショーみたくなやつ。)
ボタンとか、サムネイルをクリックすると変わるやつはあったんですけど、それはなかったんです。。
誰か教えていただけませんでしょうか?
初心者ですいません。。。宜しくお願いいたします。
>>599 ボタンのonclickをそのままimgタグにコピペすればいいんでは。
むやみにグローバル汚染しているアメリカはうんこ
602 :
Name_Not_Found:2005/05/18(水) 00:37:00 ID:zJPFWHJy
InternetExplorerで、画面のスクロールにあわせてテーブルの位置を
ブラウザのウインドウの絶対位置に固定したいのですが、
どういう方法があるでしょうか。
Netscapeだとウインドウに対する絶対位置が指定できるようですが・・。
>>602 ie が position:fixed; に対応するのを待つ
>>602 positionはabsoluteを使用し、onscrollのたびに画面上の
あるべき位置を計算してそこへ移動する。検索すれば
サンプル見つかると思うけど。
>>595 その質問ってひょっとして
「なんで
if(window.getSelection) { // Gecko
if(!window.getSelection()) return;
window.getSelection().collapseToStart();
}
としないのか」
って意味?
ちなみにif文の中で"var 変数;"と宣言しても
その変数のスコープは関数全体だから。
>>602 IE7では position:fixed できてほしいな・・・。
「position:fixed expression サンプル」 とかでぐぐればどうよ。
>>598 >オブジェクトの場合は参照(ポインタ)を保持するだけなんで、
そうだったのか。てっきり実体を複製だと思ってた。
無知スマソ
>>605 さっきのコードでいうならそうだな。
if(window.getSelection) { // Gecko
window.getSelection().collapseToStart();
}
こうした方がコード質量減るし判りやすいんじゃないかと思ったんだが
安全面とか可読性でいうと腐れたコードだということで終了
今更だが良スレだなここは。
時々アホウも見かけるが・・・
>>607 えーと、
>>594 ですけど、window.getSelection()が何も返さない
ことがあるかとおもってif文を入れたのですが、何も返さないという
ことはないようですね。ですから
>>607 のコードで無問題でしょう。
テキトですみませんでした。
var rの方は変数に取っておかないとcollapse()とselect()を順次
呼ぶのに不便だからいいですよね…
>>561 の「スムーズに先頭へスクロール」作ってみた。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function scr() {
var d = window.pageYOffset; if(d <= 0) return;
window.scrollBy(0, -Math.floor(d/20+1)); setTimeout(scr, 20);
}
</script>
</head><body>
<p>1<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>2<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>3<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>4<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>5<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>6<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p><a href="javascript:scr()">scroll to top</a></p>
</body></html>
>>609 しまった、IEに対応してなかった。差し替え版。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function scr() {
var b = document.documentElement || document.body;
var d = b.scrollTop ? b.scrollTop : window.pageXOffset;
if(d <= 0) return;
window.scrollBy(0, -Math.floor(d/20+1)); setTimeout(scr, 20);
}
</script>
</head><body>
<p>1<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>2<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>3<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>4<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>5<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>6<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p><a href="javascript:scr()">scroll to top</a></p>
</body></html>
>>602-604 作ってみた。GekcoもscrollTopに対応してるんだな。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
window.onscroll = function () {
var b = document.documentElement || document.body;
document.getElementById('d0').style.top = (100 + b.scrollTop) + 'px';
}
</script>
</head><body>
<div id="d0" style="position:absolute;border:solid blue;top:100px">TEST</div>
<p>1<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>2<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>3<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>4<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>5<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
<p>6<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
</body></html>
>>612 整数の中でも奇数(2で割り切れない数)を2で割ると ***.5 みたいに端数が出てくるんだよ
>>612 JavaScriptは整数をすべて浮動小数点に変換して計算しているからだよ
>>612 はJavaScriptの言語仕様をまず読むべきだよな。「整数除算」の
ない言語というのは確かにちょっと変わっているのかも知れないが。
ちょいと
>>612よ。聞いてくれよ。スレとあんま関係ないけどさ。
このあいだ、Web制作板のJavaScript質問スレ行ったんです。JavaScript質問スレ。
そしたらなんか人がめちゃくちゃいっぱいでカキコできないんです。
で、よく見たらなんかMath.floorを抜かすと、上手くソートできない、とか書いてあるんです。
もうね、アホかと。馬鹿かと。
お前らな、上手くソートできない如きで普段来てないJavaScript質問スレに来てんじゃねーよ、ボケが。
仕様だよ、仕様。
なんか親子連れとかもいるし。一家4人でJavaScript質問スレか。おめでてーな。
よーしパパ整数の足し算割り算やっちゃうぞー、とか言ってるの。もう見てらんない。
お前らな、サイ本やるから回線切れと。
JavaScript質問スレってのはな、もっと殺伐としてるべきなんだよ。
DQNな質問をした奴といつ喧嘩が始まってもおかしくない、
刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
で、やっとカキコできたかと思ったら、隣の奴が、JavaScriptは整数をすべて浮動小数点に変換して計算しているからだよ、とか言ってるんです。
そこでまたぶち切れですよ。
あのな、JavaScriptは整数をすべて浮動小数点に変換して計算しているからだよなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何が、JavaScriptは整数をすべて浮動小数点に変換して計算しているからだよで、だ。
お前は本当にJavaScriptは整数をすべて浮動小数点に変換して計算しているからだよを食いたいのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、JavaScriptは整数をすべて浮動小数点に変換して計算しているからだよって言いたいだけちゃうんかと。
JavaScript質問スレ通の俺から言わせてもらえば今、JavaScript質問スレ通の間での最新流行はやっぱり、
PHP、これだね。
PHP使ってサーバー側で全部処理。これが通のやり方。
PHPってのは結構楽にコーディングできる。そん代わりスレ違い。これ。
で、サーバー側で全部処理。これ最強。
しかしこれを頼むと次から常連にスレ違い出ていけと罵られるという危険も伴う、諸刃の剣。
素人にはお薦め出来ない。
まあお前みたいな奴は、うさのJavaScript講座でも見てなさいってこった。
>>616 マジでオライリーくれるんですか?
どうでもいいけど
サーバサイドとクライアントサイドは役割が違うことを認識するべき。
>>616 PHP厨&うさのJavaScript講座ハゲワロスww
激しく話題に乗り遅れてるがどうしても気になったのでsage質問ご容赦を。
無闇にグローバル変数を使わないという意味ではfor文も
for(var i=0;i<10;i++){
とする方が美しいのか
それともfor文の変数なんかローカル変数に決まってるんだからvarをつけないほうが美しいのか
見当違いの質問してるかもしれないが是非知りたい。宜しくお願いします。
> ローカル変数に決まってるんだから
var つけないと グローバルになるよな?たしか
for の外で var i; してるならいいけど
>>621 サーバサイドとクライアントサイドは役割が違うことを認識するべき。
>>617,621 PHP厨をバカにしたネタなのをわかってやれよw
>>619-620 洩れは必ずvarつけるよ。外にvar宣言ある時を除いては。
だいたい外にvarってのはループを抜けた後の値が必要な場合
だけなんだけど、そういう時はforは避けてwhile使うことが多いかな。
>616
ピコワロス
>>616 ワロタw
ぜひマウスイベントでフォーカスが移動する仕様を
サーバサイドphpで実装してくれ。
出来たら神認定
>>616 ギョウザ食いながら見てたら吹き出して、ディスプレイがニンニク臭くなったので責任とってください。
629 :
Name_Not_Found:2005/05/18(水) 20:41:00 ID:iEgaW8gm
showModalDialogでウィンドウを開いて、開いたウィンドウからさらに
showModalDialogを開こうとしています。
実際に試したところ、IE5.0ではエラーになり、IE5.5以降では正常に動きました。
このような使い方は正しいのでしょうか?
マイクロソフトのサイトで情報を探したのですが見つかりませんでした。
アドバイスお願いします。
>>629 MSのドキュメントに書かれてないことは分からないというほかないね。
さらに…
MSの場合、ドキュメントに書かれている通りに実装されていなかったりするw
632 :
Name_Not_Found:2005/05/19(木) 02:09:05 ID:E/LFl2aI
テキスト部分の値を変えるときってどうしてる?
1: innerHTML = str
2: nodeValue = str
3: createTextNode -> replaceChild 〜
4: createTextNode -> insertBefore -> removeChild 〜
うーん。
>>632 過去スレどころか、このスレで既出。そんなことすら読めない奴は帰れ。
>>634 3 。
2 の nodeValue に直接値を入れるのは、なんか気持ち悪い感じがしない?
1 はまあ論外として。 1' で textContent もあるね。
>>3FAQ.,A3嫁。前にオレがオマイラから言われた通り。
それはそうと、関連してるかもしれないけど・・・
他のサイトをXMLHTTPを使って内容を持ってきて、
BODYタグ以下のみを抽出して、
HTMLのBODY以下の一部(具体的にはPタグ)に落としてきているのだけど、
切り取ってしまったSTYLEタグを反映しようと施行錯誤しましたが、どうやっても反映されません。
その内容をあらかじめHTMLに追加しておいても、
指定クラスは、抽出してHTMLに落としこんだ後しか現れないのからか分かりませんが、
反映されてないようです。
しかも色々調べたらIEでは、STYLEタグへのCSS規則の追加は出来ないようなのです。
ttp://www.parkcity.ne.jp/~chaichan/src/javascdom03.htm ◆ スタイルへさらに新たな規則の追加(NN6オンリー)参照。
何か良い手はありませんかね?
639 :
637:2005/05/19(木) 08:24:15 ID:???
えっ、styleタグに追加する方法あるの?
いや、そりゃ各Elementごとにstyle指定して入れるのは簡単だけど
class単位で設定しているstyleタグのCSSを作成/追加/変更することが出来るの?
>>637-639 できるよ。IEが標準に従ってないから振り分けが必要
になって面倒というだけで。
641 :
637:2005/05/19(木) 08:50:04 ID:???
ソースは?
サンプル上げるのめんどくさければ、記述サイトでもいいよ。
642 :
634:2005/05/19(木) 08:55:59 ID:???
>>637 別に質問じゃなくて、DOM使いで、実際どうやってる人が多いのかアンケートしたかっただけだよ、おばか。
CSS のは addRule とか document.createStyleSheet とかで検索すればいいかも。
>>636 > 2 の nodeValue に直接値を入れるのは、なんか気持ち悪い感じがしない?
object.property = '...'
のように、プロパティを書き換えるだけで済むのだから気持ち悪いどころか、
まず真っ先にこれの使用を検討するのがふつう。
そもそも、そのためにnodeValue等が書き込み可能になっているんじゃないの。
他の方法は、object そのものを新規に作るわけで、問題がある。
例えば、管理出来ないまたは管理を忘れたスクリプトが、
そのobjectを事前に参照していた場合、
勝手に削除され新規作成されたら困ることになる。
>>643 自分のページに管理できない/忘れたスクリプトが混ざって
るようなメチャクチャな奴のことなど配慮する必要はない。論外。
それはそれとして、
>>634 は別にどれが悪いということはないと
思うよ。文脈に応じて使いやすいものを使えばいいんじゃないの。
>>643-644 どっちも正しいな。
引継ぎ等で仕様を紛失するのはよくあること
大規模プロジェクトの一部や極小オブジェクトでは
何も判って無いペーペーがいじって壊すというケースも珍しくは無い...
だがそれこそ「管理がなって無い」のは確かなので論外というのも正しい。
現実的にはオブジェクトはブッキングを避けるため少ない方が良いというのも正しい。
俺はケース売ケースで分けてる
比較的nodeValueの仕様頻度が多いか。
>>641 ずいぶんエラソーだな喪前。説明はしないぞ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
if(document.createStyleSheet) { // IE
var s = document.createStyleSheet();
s.addRule('body', 'background-color: yellow', 0);
} else { // Gecko
document.documentElement.appendChild(document.createElement('style'));
var a = document.styleSheets;
a[a.length-1].insertRule('body { background-color: yellow }', 0);
}
}
</script>
</head><body>
<p><a href="javascript:test()">test</a></p>
</body></html>
>>646 イカス
関数名がtestなのが適当ッぷりを滲み出してて更にイカス
648 :
637:2005/05/19(木) 13:16:50 ID:???
>>642 出来ました。しかも前スレにもありました。Vol4あたり....
>>646 なるほど。styleタグなしでも出来るのネン。
偉そうついでにもう1つ。(意味がわからんが)
>>637で述べているようにXMLHTTPで、他のサイトのソースを引っ張ってきてるんだけど
どうやらtext/htmlは、文字列でしかひっぱて来れないみたい。
つまりresponseXMLでは、text/htmlはXMLパーサが解析しないので、responseTextでしか
引っ張って来れない。(IEでは、documentElementがnullが返ってくる)
で、しょうがないんで、要らないとこ切りとってPタグで囲んで
手っ取り早くouterHTMLを書き換えちゃってます。
そうすると表示はなんとかなったけどDOMで追うと親子関係がめちゃめちゃになってました。
innerHTMLでアラートを表示させても、終タグまで引っ張れてないみたい。
なんで、responseTextをタグごとに抜き出してDOMで再構築してから指定の場所に
appendChildしようか?う〜ん、めんどくさいかな?と思ってるんですが、
なんか、さくっとできる方法ないですかね?
ps 過去レス全部検索かけてたんで遅レスでスマソ。
649 :
Name_Not_Found:2005/05/19(木) 13:17:43 ID:jVzS6Y0P
iframeをボタンを押したときにsrc属性を変えて
Loadしたいんだけどどうすればいいのでしょうか?
とりあえず<div>で囲んだなかに
div.innerHTML = "<iframe src='/cgi-bin/hogehoge.cgi'></iframe>";
というやり方でできたのですが、htmlの中に固定で記述されているiframeに
でやるやり方がわからないのです。
>>649 そんなもんタグにid振ってdocument.getElementById('ID名').src = 'URI';
でいいんじゃないの?何も調べてないとしか思えないぞ。
>>648 そうなんだよね、HTMLだと文字列でしか返してくれないので困る。
しかし親子関係がめちゃめちゃになるというのはよく分からないな。
文字列が途中で切れているとかなの?または文字列は全部取れるけど
outerHTMLの書き換えが駄目とか?
651 :
637:2005/05/19(木) 14:27:14 ID:???
「親子関係がめちゃめちゃになる」
前言撤回!!
できました。Pタグって終タグ要らないんだね。
取ってきたソース自体についてなかったし・・・
tableでやったら終タグまで出たし、childNodes.lengthも機能した。
ただouterHTMLで置き換えるソースをPタグで囲むと、そのPタグから下が見れないよ。
document.getElementsByTagName("p")[0].childNodes.lengthが0
document.getElementsByTagName("p")[1].childNodes.lengthは正常。
(これはPタグを被せずに置き換えたときの上記item(0)と同じ。)
なんだろうね。
652 :
Name_Not_Found:2005/05/19(木) 14:30:08 ID:jVzS6Y0P
>>650 .src = 'URI';
だけでいいですの?
最初、それをやったんだけどうまくいかなかったから
何かメゾッドを切らないとダメかと思って調べたけど
見つからなかったということでした。
原因をもうちょっと調べよ。
>>651 もしかしてHTMLを理解してない? Pタグの中に「何が入れられるか」
はきっちり決まっているわけだが…そんなんでDOMって無茶では。
とりあえずPの代わりにdivを使っておいたら。
654 :
Name_Not_Found:2005/05/19(木) 14:36:12 ID:gP2SEHGj
「新しいウィンドウを開いた場合に,そのウィンドウを自動的に閉じる」
ことについてお聞きしたいのですが‥(><)
そのウィンドウがHTML等であれば,
BODY属性等に,setTimeoutを入れれば良いと思いますが,
【例】setTimeout(function() { NewWin.close(); }, 5000);
新しく開くウィンドウを,
HTMLではなく画像等のデータファイルのみにしたい場合,
元のウィンドウ内での HTML か JavaScript の記述によって,
数秒後自動的に新しいウィンドウを閉じるようにする‥
といったことは不可能でしょうか?
>>654 別に開いた側の窓のスクリプトでできるよ。ただし時間が来る
前にスクリプトが動いている窓から別のページに移動してしまうと
スクリプトが止まってしまうという弱点はあるが。
var w = window.open(...);
setTimeout(function() { w.close(); }, 5000);
>>652 やれやれ、おんぶにだっこかよ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>???</title>
</head><body>
<iframe id="f0" src="
http://www.google.com"></iframe>
<p><a href="javascript:document.getElementById('f0').src='
http://www.yahoo.com';void(0)">test</a></p>
</body></html>
656 :
637:2005/05/19(木) 14:46:30 ID:???
bodyから見ると、挿入したものがちゃんと繋がったものがすべて表示されるね。
でもchildNodes[0]のPタグは、innerHTMLが空で表示される。
で、その下のchildNodes[0]見ようとするとオブジェクトがないって怒られる。
もちろんgetElementsByTagNameでその下のエレメント(center)を呼び出しても
ちゃんと表示される。
なんだろう?被せたPタグだけ文字コード違うとか????
はぁ・・・
658 :
637:2005/05/19(木) 14:57:31 ID:???
>>651 「段落を示します。ただし、ブロックレベル要素を含んだり、入れ子にすることもできません。
つまり、P要素の途中でブロックレベル要素を入れる場合は、終了タグを入れた後に
定義するべきです。 また、空のP要素も認められてなく、ブラウザ も無視することが
推奨されています。 」
「文法的にはDIV要素などを使用し、ブロックレベル要素を入れることが正しいものです。 」
こういうことでよろし?(だんだんスレ違いになってきたが)
独学行き当たりばったりなんで、こういうこともあるよ。
HTML的に正しくないものをinnerHTMLで突っ込んだら
ぐっちゃぐっちゃにならない方がおかしい。もうこのスレの
範囲じゃないな、どっかよそへ逝ってくれ。
660 :
637:2005/05/19(木) 15:07:40 ID:???
DIVに換えたら直りました。
661 :
654:2005/05/19(木) 15:23:09 ID:gP2SEHGj
>>655さま
むむむ‥??(゚〜゚;)ゞ
まだまだ初心者ゆえ理解しきれてませんが,
画像ウィンドウ以外にも,新規ウィンドウを開くということでしょうか?
とにかく方法があるのですね,がんばってみます.
ちなみに,新規で開いたウィンドウをHTMLにして
その中に画像を貼ってしまえば簡単なのですが,
ただ画像が何枚もあると,その分だけHTMLを作るのが面倒だなぁ、、
と思ってお聞きしてみた次第でした.
>>661 画像ウィンドウをどうやって開いているの。aタグで開くんじゃなく
window.openで開けという意味なんだが。それが分からないならこの
スレで質問する以前のレベルだからチュートリアルでも勉強してきて。
手取り足取り教えることはしないから。
ちなみに
>>655 の「別に」は「別の窓を開く」という意味じゃ
なくて「べつに難しくないよ」というつもりだったのだ…
ちなみに
>>652の【メゾッド】はスルーなのですね。さっきから誰も触れないのですが・・・
そうだね。日本人なら米だよね。
フォントが悪くて濁点がよく見えなかった。いや老眼かorz
でも iframe の src に代入して他のページをうつすとさ、
そのページの onload イベントは帰って来ないよな。
onload したいときは また作って前の消してるわw
>>667 そりゃ他鯖のページをロードした以上他鯖の窓だから操作
できないもんねえ。しかたないよ。
669 :
Name_Not_Found:2005/05/19(木) 18:32:46 ID:jVzS6Y0P
>>655 ついでにケツも拭いてもらいたいんだけど
それをやるとレスポンスが返っても
IE6のブラウザのレスポンス待ちバー(一番下にある緑色の進捗帯)が
いつまでも表示しっぱなしなのはなぜ。
>>669 ケツ拭き用にティッシュ置いときますね
_,,..i'"':,
|\`、: i'、
.\\`_',..-i
.\|_,..-┘
>>668 ちゃうねん。自分のトコでもできないねん。
・・・?
・・・あれ? やってみたらできた orz
<iframe id="hoge" src="hoge.html">
があったとき、
window['hoge'] の onload は効かないけど
document.getElementById('hoge') の onload は効くのね・・・。
正直スマンかった。
>>655 はなんでわざわざ href の中に javascript: で書いているのだろうw
>>670 流せるようにトイレットペーパーにしておくれ。
>>671 探してきましたよ
____
Ю)__)
|´ー`| (´∀`;)....ヤッターカミガアターヨ
~~~~~
____
Ю)__)
|終了|
|´ー`| ....(;´Д`)イヤァァァァッ
~~~~~
>>672 ・・・忘れかけてた駅のトイレでの切ない思い出を思い出した・・・・゜・(ノД`)・゜・
>>672 ううっ、紙がなくて、チューインガムの包み紙でケツを拭いた過去を思い出した…
トイレと紙のスレになりますた。
677 :
Name_Not_Found:2005/05/19(木) 21:04:26 ID:WG+bbZem
ここに世話になりだした当初から気になってるんだけど>1の
一、ブラクラに打ち勝つ精神力を持つこと
のブラクラって自分で間違って作ってしまったもののこと?
それとも勉強サイト見てる間に引っかかってしまった悪質JSのこと?
>>678 両方じゃないの?
システム的なブラクラとか精神的なブラクラとか色々あるからのう。
680 :
654:2005/05/19(木) 21:38:55 ID:gP2SEHGj
>>662さま
>>663さま
あ‥こちらの説明が悪かったようですみません.
画像ウィンドウは<A>タグのTarget属性で開いても
Window.openの記述でも,どっちで開いてもいいです.
(両方分かりますw)
でも,新規に開いた方にスクリプトを書くことができれば(=HTMLファイルであれば)
数秒後自動的に閉じる記述をJavaScriptでできるというのは分かりますが,
新規ウィンドウを開く側(=本体の方)のHTML内あるいはJavaScriptの記述で,
数秒でその新規ウィンドウが閉じるようにするのは不可能でしょうか??
‥という質問だったのです.
昼過ぎにはいろいろ検索してみてて,無理ぽいかな‥とは思ったのですが,
もし何か方法があれば‥と思った次第でした.
表現下手ですみません(><)
>>680 アンタは馬鹿かね?
>>655に書いてあるだろ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>???</title>
<script type="text/javascript">
function op(u) {
var w = window.open(u, '_blank');
setTimeout(function() { w.close(); }, 2000);
}
</script>
</head><body>
<p><a href="javascript:op('t0.png')">test</a></p>
</body></html>
ああ、また他人のケツ拭いてしまった… なお、なぜjavascript:uriを
hrefに書くかというと、クリックしろという意味でリンクにしたいし、
リンクならhrefを書かないわけにいかないから。
javascript 勉強したいんですが、
オススメの書籍教えてください。
目的としては、ウェブページではなく、
firefox の拡張を作ってみたいというものです。
perl と borne sh script くらいは使えますが、
オブジェクト指向はまともにやったことありません。
オライリーの高い奴とかよさげなんですが、どうでしょうか。
>>681 _, ,_
(д` ) おれのケツも拭いて
(⊃⌒*⌒⊂)
/__ノωヽ__)
>>682 サイ本できまり!
685 :
629:2005/05/19(木) 22:26:16 ID:???
あんたらのわからないものは馬鹿にしてスルーですか?
>>685 いや、馬鹿にはしてないよ。本当にどうしょうもないもん。
MSさんが決めることでつ。恨むならMSを恨め。
688 :
629:2005/05/19(木) 22:51:33 ID:???
>>686,687
すみません。てっきり馬鹿にされていると思いました。
>>681 や、だからさ、
<a href="javascript:op('t0.png')">test</a>
と書くよりだったら、
<a href="t0.png" onclick="op('t0.png'); return false" onkeypress="this.onclick()">test</a>
って書いたほうが、JS使えない環境でもリンク開けてお得だろ? という意味。
>>689 もちろんそういうのはいいんだけど、あくまでJavaScript動作確認
部分キックするだけだからさ。窓開くとかページ遷移とか、ナビゲーション
に類するJavaScriptコードならあんたのいうように書くよ。
>>689-690 うげげ、窓開くんだからナビゲーションに類してるな。
まあ自動窓閉じの確認だから勘弁して。
ってか、ここで質問する奴回答する奴のサイトを1度見てみたいと思わないか?
いったいどんな感じでJavascriptを使ってるんだろうか?
カンタービレ(歌うように)
♪Volare, oh oh, cantare, oh oh oh oh
nel blu dipinto di blu, felice di stare lassu
イタリア語は板違いですよ。
696 :
682:2005/05/20(金) 02:19:28 ID:???
>>684 どうもです。オライリー本はやはりよさそうですね。
他に薦められたのも本屋で見てみます。サンクス。
697 :
682:2005/05/20(金) 02:20:02 ID:???
698 :
Name_Not_Found:2005/05/20(金) 05:59:07 ID:0G8lT6Oq
正規表現で桁埋めをしたいのですがうまくいきません。
どのようにすればいいのでしょうか?宜しくお願いします。
str = document.forms[0].elements[0].options[document.forms[0].elements[0].selectedIndex].text;
str = str.replace(new RegExp(' ',"g"), "0");
<option> 0
<option> 50
<option>100
699 :
698:2005/05/20(金) 06:01:36 ID:???
<option> 0
<option> 50
<option>100
消えてしまったのでoptionの部分です。
は¥A0
document.forms[0].elements[0].selectedIndex って何だよww
for文でループしる。
var op = document.forms[0].elements[0].options;
var leng = op.length;
for (var i = 0; i < leng; i++) { op[i].text = 〜処理〜 }
702 :
698:2005/05/20(金) 07:01:13 ID:???
選択中のtextを参照できればいいので、ループは必要ないと思います。
分からない所はスペーススペース0の時に000としたいのですが
str.replace(new RegExp('スペース',"g"), "0");や
str.replace(new RegExp('; ',"g"), "0");としても
スペーススペース0になってしまいます。
そこの所を教えて下さい。何がいけないのでしょうか?
宜しくお願いします。
>document.forms[0].elements[0].selectedIndex って何だよww
長いということですか?ソースではnameになってます。
703 :
698:2005/05/20(金) 07:07:38 ID:???
[InternetShortcut]
URL=javascript:f=window.document.forms[0].elements;void(f[2].value=unescape("sage"));
これ便利!
つーか、タグ内の連続スペースはブラウザによって保持されるかわかんないし、
replace より substr 使ったほうがいいんじゃねーの?
str = ('0000' + str).substr(-3, 3); なニュアンス
>>698 ちゃんと str 変換した後、
document.forms[0].elements[0].options[document.forms[0].elements[0].selectedIndex].text = str;
ってリセットしてる?
706 :
698:2005/05/20(金) 07:56:23 ID:???
外出時刻ですので、帰宅後宜しくお願いします。
いやだ。
var select_tag = document.getElementByTagName("select")[0];
もしくは document.forms.0.elements.0
var str = select_tag.options[selece_tag.selected];
の方が見やすくない?
付けるとoptiontextの見え方がセンターによってカッコ悪いね。
いくらスペース空けても解釈されないからだろうけど、
桁数決まってるなら
>>704みたいに最大必要分だけ"0"付けて
後ろから桁数分刳り貫けば!
つ〜か、何様?おまえら宿題だやっとけってことか?
次スレ立ててこのスレ落としちまえば
>>698の慌てふためく顔が見られるぞ。
var select_tag = document.getElementByTagName("select")[0];
var str = select_tag.options[selece_tag.selected].text;
select_tag.options[selece_tag.selected].text = str.replace(/[\W+]/g,"0");
宿題お〜わりっと
付けると→ 付けるとね。
なんで「選択されてる部分だけ0フォーマットされればいい」のか理解できないんだけど。
そういう要望だからいいけど、不自然。
>>709 よ
[\W+] って何だよ。 + はどっから持ってきた?
っていうか [\W]+ の typoかもしれんが、それだと どれだけあっても 0 が 1桁 しか置換されないぞ。
再提出しなさい。
しかし
<option> 0
<option> 10
<option>100
こ
の場合、 options.略.text の部分ってどこまでなんだろうな?
"\s\s0\r\n\t" とかにならないかと不安。 (※ \sは半角スペースとして)
ちゃんと </option> で閉じようなw
713 :
712:2005/05/20(金) 10:23:52 ID:???
なぜか改行とかが変になったw スマンww
>>712 どこを縦読みでつか
「(゚Д゚)ハァ?optionは閉じタグいらねーんだよバーカ」と帰ってくる悪寒
つか、確かに閉じタグ無いのにtext取れるって微妙に怖いな
select_tag.options[selece_tag.selected].text = str.replace(/[\W]/g,"0");
+要らんかったね。[\W]+だと が一まとめで検索に掛かって
gが働かないんだね。ちなみに[\W+]だとなぜかgが機能したのだ。
ところで
str.replace(/(href=')([^h])/ig,"href='http://tv.yahoo.co.jp/vhf/aichi/$2");
の([^h])がうまく機能してくれないんだけど、
     。 。 。 。  
[^ ]って「〜以外のローマ字」に限定されるの?
それとも数字やその他の文字にも引っかかるのかな?
「h以外の如何なる文字」を表現したいのだが・・・・
716 :
Name_Not_Found:2005/05/20(金) 13:49:41 ID:9uvpe4Ij
JAVA初心者です。
自作H.PでMP3を完全ループで再生したいのですが、
embdタグなどだと、ループ時に無音がはいってしまいます。
FLASH、あるいはJAVAだとH.P.のBGMをMP3で完全ループで再生できると
聞いたのですが、どなたかソースがわかる方いらっしゃいませんでしょうか?
よろしくお願いいたしまする。
>>716 まず
>>1を読め。このスレではJavaもFlashも扱わないんだ。
>>716 タグ名間違えてる時点で救いよう無いな.
H.Pって何だろうボクワカンナイ
>>1-10 全部読み直せ。この辺のテンプレは常識。
719 :
654:2005/05/20(金) 16:09:27 ID:ZQNz0vKs
>>655さま
>>681さま
はぁはぁなるほど‥
「開いた側の窓」というのを,
「新しく開いたウィンドウ」の意味と勘違いしてました‥(ノ<;)
馬鹿かどうかと言われば,余裕で馬鹿の部類です(泣)
今のレベルは, HTMLは教本読破して,ほぼ理解して(るつもりで),
その本にチョコっと書かれていた簡単なJavaScript文は覚えたところで‥.
そんなやつに丁寧に教えて下さってありがとうございました.
720 :
698:2005/05/20(金) 19:22:57 ID:???
>704
前に足して後ろから3つ取るアイデアはいいと思いましたが、
出来ません。それにスペーススペース0になってしまいます。
for (i = 0;i <= 100;i++) {
document.write(('00' + i).substr(-2,3) + "<br>");
}
>711
>なんで「選択されてる部分だけ0フォーマットされればいい」のか理解できないんだけど。
組み合わせのArray生成スクリプトなので
var Combi105 = new Array(としたいのです。
お陰様で
str = str.replace(/[\W]/g,"0");
で出来ました。アドバイスありがとうございました。
703についてなんですが
移動して入力としたいのですが
URL=javascript:window.open('
http://pc8.2ch.net/test/read.cgi/hp/1114774413/l50','_top');f=document.forms[0].elements;void(f[2].value='sage');
URL=javascript:location='
http://pc8.2ch.net/test/read.cgi/hp/1114774413/l50';f=document.forms[0].elements;void(f[2].value='sage');
両方ともだめです。
どうすればいいのですか?
>>715 てゆうか、JSでの \w って単なる [0-9a-zA-Z_] じゃなくて、
日本語の数字とか平仮名とかも入るんだけど、それわかってるのかな?
あとなんでURLで [^h] とかしたいのかわからんw
[^h] これで h 以外のいかなる文字になるが、
例えば
<a href="a.html"> とかしてても、
HTMLの内部的には <a href="
http://〜略〜/a.html"> と置き換わってるわけで、
つまりネット上にあると全部 h から始まるわけで、
推測だけど、それ知らないで innerHTML とかやってるからとれねーんじゃねーの? とかどうよ。
722 :
704:2005/05/20(金) 19:37:32 ID:???
>>698 > それにスペーススペース0になってしまいます。
まずソースからスペースなくせよおばかwwww
それか まず先に str = str.replace(/[^0-9]+/, '');
それくらい言われなくても気づkwww
まあできたみたいだからどうでもいいけどね ヽ(;´д`;)ノ
>>721 >JSでの \w って単なる [0-9a-zA-Z_] じゃなくて、
>日本語の数字とか平仮名とかも入る
実装依存。正しくは、入らない。
こんにちは。
別フレーム(sita)のフォーム内テキストボックスに2種類数字がかかれていて、その二つを引き算した数をdocument.writeで別フレーム(ue)に出力しようと思っています。
sitaフレームに書かれているものは、
<html><body><form name="menu"><input type="text" value="0" name="goukei1"><input type="text" value="0" name="goukei2">
</form></body></html>
ueフレームに書かれているのは
<html><head><script language="JavaScript">
var zankin;
var tanomi;
var tounyuu;
parent.sita.menu.goukei1.value = tanomi;
parent.sita.menu.goukei2.value = tounyuu;
zankin = tounyuu - tanomi;
</script></head><body>
<script language="JavaScript">
document.write("あと",zankin,"円残っています");
</script></body></html>
ueフレームには、あとundefined円残っています、と出ます。
ueフレームは、このhtmlページに移る前にsitaフレームのテキストボックスを操作しているので、0-0という訳ではないです。
変数の扱い方が苦手なので…。
ちなみに、デザインを考える課題なので、ウェブショップに応用するつもりはないので、厳密に考えなくていいです(藁
アドバイスお願いします。
各フレーム内のドキュメントの読み込みは非同期なので、
フレームをまたがるスクリプティングには注意。
HTML要素がスクリプト上で定義、操作できる完全な保証はそのドキュメントを含むwindowオブジェクトのonloadイベント以後。
従って、1つのフレーム内スクリプトが他方のフレーム内ドキュメントのHTML要素にアクセスするにはそのonloadイベント以後でないといけない。
またどの時点で計算をするのか?
1文字入力しただけで計算するわけではないだろう?
1つの<SCRIPT>ブロックは1度ブロック内を全て読み込み、関数外でダイレクトにステートメントを書いたものは即、実行される
そこも理解しよう。
なんにしてもDHTMLオブジェクトのイベントを調べてみよう。
>>724 流れに無理がある。
>>725が言うように、読み込んだ後に処理をしないと無理かと
自分も良く分からなかったんで、試しに読み込んだ後、上のフレームに適当にボタンを作って
そのボタンを押すと下のフレームの menu.goukei1 の値を変える処理をしたら出来た
あと、tanomi と tounyuu の値が決まっていないんで、いきなり値の計算をされても困るかと
727 :
715:2005/05/21(土) 15:42:49 ID:???
舌足らずで、ゴメンなさいね。
>HTMLの内部的には <a href="
http://〜略〜/a.html"> と置き換わってるわけで、
>つまりネット上にあると全部 h から始まるわけで、
>>648で言っているような形でXMLHTTPのresponseTextの編集の話。
実行環境が、ローカルなんで相対参照はローカルを読みこむことになる。
サイトに挙げたところで、参照先は自分のURLで、決してimg/tv.yahooではない。
なんで、innerHTMLやる前に絶対参照に書き換えてるのさ。
で、YahooTVのサーバー上の処理コードが統一されてないので、
絶対参照の「”」「’」囲み/囲みなしや、相対参照の「”」「’」が混在してるの。
なんで色々正規表現を入れてるわけ。
で、これは最後の正規表現で、ほぼ絶対参照に変わってるんだけど、
href="20050521.html・・・・"のみ残ってるんで、それを換えていわけさ。
>>723そうみたいね。([~h]|\d)でやってます。
ちなみに
function optimizeLinks(str){
str = str.replace(/=(\'?)\//ig,"=$1
http://tv.yahoo.co.jp/");
str = str.replace(/(href=)[\.](\/)/ig,"$1
http://tv.yahoo.co.jp/vhf/aichi$2");
* str = str.replace(/(href=['|"])([^h]|\d)/ig,"$1
http://tv.yahoo.co.jp/vhf/aichi/$2");
* str = str.replace(/(href=)([^h|="|~']|\d)/ig,"$1
http://tv.yahoo.co.jp/vhf/aichi/$2");
return str;
}
今のところのこれでやっとります。
ついでに、
"/vhf/aichi/"をoptimizeLinksの引数で持ちたいんだけど、
持たせた時に*はどうかけば良いのですか?$1みたいな、
正規表現メンバにあらかじめ入れとけますか?
728 :
715:2005/05/21(土) 15:45:09 ID:???
Javascriptなんで×メンバ○プロパティでした。
729 :
715:2005/05/21(土) 15:53:46 ID:???
var tanomi = parent.sita.menu.goukei1.value;
var toukyuu=parent.sita.menu.goukei2.value = tounyuu;
var zankin = toukyuu-tanomi;
右から左に代入、これ基本。
ハイ!おじさん、今良い事言った。家訓にするように!
君がやってるのは、初期化してないゴミ値を、inputのvalueに代入。
ゴミ値を加算。合計を恐れ多くも「document.write」で表示。
>>2嫁。以上。
730 :
Name_Not_Found:2005/05/21(土) 15:54:55 ID:n/RXIpEi
ページを三つのフレームに分割して、一つのフレーム内にあるリンクをクリックすると、残り二つのフレームの内容が同時に書き換えられるようにしたいと思っています。
また、リンク1をクリックすると、残り二つのフレームがそれぞれのリンク1の内容を表示し、リンク2をクリックするとリンク2の内容を表示するようにしたいと考えています。
そのために使ったスクリプトです
<script type="text/javascript">
<!--
function func() {
top.FRAME1.location.href = "aaa.htm";
top.FRAME2.location.href = "bbb.htm";
return false;
}
// -->
</script>
<a href="#" onclick="return func()">XXX</a>
これだと、二つのフレームの内容を同時に書き換えることはできますが、二つ以上のリンクに適応することができません。
同じページの中に、複数のフレームの内容を書き換えるリンクを、二つ以上設置するにはどうすれば良いでしょうか?
>>730 1. リンクの数だけ複数個の関数を用意する
2. 引数に何らかの値を渡して識別する
3. Event オブジェクトから対象のリンクを識別する
>>727 >723そうみたいね。([~h]|\d)でやってます。
721の指摘は \w だけでなく、\d にも言える。
Firefoxの実装とは言え、ECMA262-3に対してはバグである。
このバグが問題にならなくて、XMLHTTPということは、JScriptオンリーだろうと分かる。
715がJScriptであることを先に書いておけば、721は勘違いをしなかったはず。