+ JavaScript の質問用スレッド vol.38 +
1 :
1 :
2005/06/19(日) 21:38:16 ID:??? ━━━━━JavaScript質問スレ道場訓━━━━━
一、礼節を重んじ常に努力精進すること
一、ブラクラに打ち勝つ精神力を持つこと
一、心身の優れたJavaScriptを学ぶこと
一、雑草の如く生涯JavaScriptを貫くこと
一、感謝と反省を忘れないこと
以上
━━━━━━━━━━━━━━━━━━━━━━
このスレに書き込むことが許されるものは以下のとおり
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・FAQ・過去ログや関連資料を読むことができる者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
(質問時、回答時にはなるべく対象環境を明記しよう)
前スレ
http://pc8.2ch.net/test/read.cgi/hp/1117009013/l50 まとめサイト
http://web2ch.s31.xrea.com/?JS FAQ・注意
>>1-5 、過去ログ・関連資料・関連スレ
>>1-50 またはまとめサイト
2 :
1 :2005/06/19(日) 21:38:37 ID:???
【質問を書く上で】 1)多くの質問は検索すれば瞬時に分かるようなもの。書き込む前にまず google等で検索すること。検索してないとどう煽られても文句は言えない。 2)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 3)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 4)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 5)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
3 :
1 :2005/06/19(日) 21:39:34 ID:???
【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") を使えばできる。古いブラウザだと隠しフレームに読むなどのワザが必要。
4 :
1 :2005/06/19(日) 21:39:54 ID:???
(まだ検討中だけど一応) 【よくある主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・eval():数値化→eval(x)⇔parseInt(x)/parseFloat(x)、変数参照 →eval(v)⇔window[v]等、代替手段があることが多い。適切に選択を。 必要な場合(例:まとまったコード文字列の評価)には使うのがよい。 ・on属性 vs addHandler()等:ハンドラが1つだけと分かっていれば on属性で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。 ・JavaScript vs PHP等:サーバ側とJSのどちらが適切かという議論は ありだが、JSスレなので基本的にはJSでの方法を検討。
5 :
1 :2005/06/19(日) 21:41:46 ID:???
6 :
1 :2005/06/19(日) 21:44:39 ID:???
7 :
1 :2005/06/19(日) 21:45:43 ID:???
8 :
1 :2005/06/19(日) 21:46:20 ID:???
9 :
1 :2005/06/19(日) 21:46:47 ID:???
10 :
1 :2005/06/19(日) 21:47:24 ID:???
とほほのJavaScriptリファレンスは誤り多数という意見から非推奨 テンプレ以上です。
12 :
Name_Not_Found :2005/06/19(日) 22:06:19 ID:97xKEMJn
なんとか書いてみますので宜しくお願いいたします。
現在オラクル8IDB PL/SQL にてwebページを作成しています。
リンク先に値を渡したいのですがうまくいきません。
ソースです。
<script type="text/javascript">
<!--function FC(WO) { switch(WO.FSGo.selectedIndex){
case 0:document.forms[0].action="192.168.0.90" break;
case 1:document.forms[0].action="
http://10.195.0.1/pls/kintai/KN_YUU " break;
case 2: document.forms[0].action="
http://10.195.0.1/pls/kintai/KN_FURI " break;
case 3: document.forms[0].action="
http://10.195.0.1/pls/kintai/KN_DAI " break;
case 4: document.forms[0].action="
http://10.195.0.1/pls/kintai/KN_TOKU " break; }
document.forms[0].submit();
}
//-->
</script></head><body>
<form method="post" action="">
<select name="FSGo" onChange="FC(this.form)" >
<option> <option>有給 <option>振休 <option>代休 </select>
<input type="hidden" name="hidden1" value="'||SY||'"> ←今送信したいのはこのSY変数です。
</form>');どなたか解る方お願い致します。
13 :
Name_Not_Found :2005/06/19(日) 22:08:29 ID:97xKEMJn
すみません・・・
>>12 のものですが
次のページで値が取得出来ないためページエラーになります。
>>12-13 その「'||SY||'」というのはどういう意味なの?特に前提なしに読むと
「'||SY||'」という文字列をhidden1の値として送るとしか思えないが。
16 :
Name_Not_Found :2005/06/19(日) 22:25:43 ID:97xKEMJn
>>15 >>14 ||SY||はPL/SQL内の変数です。
書き方が悪いのですね?
治してもう一度書きます
さらに言うなら「//-->」は正しくなくて「// -->」とスペースが必要。 なんだけど、それよりスクリプトのコメントアウトやめようよ、トラブルの 原因満載じゃん。
>>16 いや、洩れたちはPL/SQLを知らないもんで。変数SYがちゃんと
渡っていることを、次のコードを...submit()の直前の行として
挿入して確認するべき。
alert(document.forms[0].elements.hidden1.value);
もしアラートダイアログが出ないのならスクリプトが実行されてない。
つかそもそも、あのヘンなコメントだとスクリプトのエラーが出てる
はずだが、、、どこでどういうエラーが出ているかちゃんと調べて書け。
>>2 の5)。エラーを無視する奴の相談には乗らないことになってる。
PL/SQLのソースをそのまま載せたほうがましな希ガス
20 :
Name_Not_Found :2005/06/19(日) 22:43:54 ID:97xKEMJn
教えてくれた通りにやってみました・・・ パラメータの指定をしなければリンクはバッチシなんですが パラメータを指定するとエラーです。 エラーの内容はどうやればいいのでしょう? ちなみにアラートは出ません・・・ ヤバイっす・・・
>>20 だ・か・ら・「どの行でどういうエラーが出るのか書け」
一度しか言わんぞ。今度その情報無しで質問来ても無視ね。
あと「パラメータの指定をする/しない」というアンタの用語は
つまり「selectメニューで2番目以降を選択する」という意味?
最初の質問はageてくれていいが、以後のやりとりはsage進行で。 2ちゃんのマナーを知らないヤシだな。
エラーは、IEなら、エラーがでたらステータスバーの左下に黄色いのがでるので、それダブルクリックすると、見れたり見れなかったり。 "パラメータ"が何を指すのか判断できないが、とりあえずJS的な問題は解決したんじゃね? ヨカッタヨカッタ。
純粋なHTMLにしました。 ソースです。 <SCRIPT type="text/javascript"> <!-- function FC(WO) { var df = document.forms[0]; switch (WO.FSGo.selectedIndex) { case 0: df.action="next.html"; break; case 1: df.action="next.html"; break; case 2: df.action="next.html"; break; case 3: df.action="next.html"; break; } df.submit(); } // --> </script> </HEAD> <form> <select name="FSGo" onChange="FC(this.form)" > <option> <option>有給 <option>振休 <option>代休 </select> </form> </HTML> ここまではエラーがありません。 次のページに<input type="hidden" name="hidden1" value="実験"> と送りたいのですがどうすべきでしょうか?
>>24 JSと関係ないようだが、いちおう「</form>」の前の行に
その「<input type="hidden" ...>」を入れればできるのでは。
それで問題なく動作することをまず確認すれ。動作しないのなら
そのバグ取りはこのスレの守備範囲ではない。
動作するとして、JS側で条件に応じてそのパラメタを送ったり
送らなかったり制御するとかそういう質問なの?結局質問の内容
がよく分からないのでそこを詳しく。
>>25 丁寧にありがとう御座います。
実際に送信したいのは社員コードなので、何を選択しても
社員コードが送信出来ればいいのです。
>>24 でいくと
<input type="hidden" name="hidden1" value="実験">←実験に
社員コードをいれつるつもりです。
case 0: df.action="next1.html"; break;
case 1: df.action="next2.html"; break;
case 2: df.action="next3.html"; break;
case 3: df.action="next4.html"; break;
実際には↑のようにnext1〜4までページで振り分けるつもりです。
ようわからんなw method="get" でもいいならそうしちゃえば?w
>>26 それで問題なく動作すると思うが。もしかして next1.html等の側で
getで渡された情報を取得するにはという話なの?何の質問なのか
全然分からんぞ。
丸投げスレへ誘導したほうがいいっぽいな
method="post"でactionにHTMLファイルを指定したらエラーになることを 知らない人なんだと思われ。そんなのスレ違いすぎ!!!
すみません・・・何処にそのGETをどのように書けばいいかが解りません。
>>30 <form method="post" action="">
上記の部分だという事はわかるのですが。
action="" ←これはこのままでいいのでしょうか?
だから<form>に何も書かないとmethod="get"になることも知らないじゃん! Web製作板初心者スレへ逝った方がいいよ。JavaScriptの質問じゃないじゃん。
>>32 action=""にしといて後でJavaScriptで埋めるのは別にいいだろ。
だが、埋める時にHTMLファイルを埋めたら必ずエラーになるから
CGIなりPHPなりとにかく変数を受け取れるものを指定すると。
いや、HTML的にはよくないけどw まぁここではいいことにしとこう。
ありがとうございます。 やってみました。ソースです。 <SCRIPT type="text/javascript"> <!-- function FC(WO) { var df = document.forms[0]; switch (WO.FSGo.selectedIndex) { case 0: df.action="next.html"; break; case 1: df.action="next.html"; break; case 2: df.action="next.html"; break; case 3: df.action="next.html"; break; } df.submit(); } // --> </script> </HEAD> <form method="get" action=""><SELECT> <OPTION></OPTION> <OPTION>有給</OPTION> <OPTION>振休</OPTION> <OPTION>代休</OPTION> </SELECT> <INPUT type="hidden" name="hidden1" value="実験"></form> </HTML> 上記のようになりました。ここまでは出来ました。 後はリンク先で値を取得すればよいと思っています。 私の言ってる事間違いではないですよね?
>>36 そうね。getであればHTMLファイルでも構わない。そのHTMLファイル上で
JavaScriptで値を取得する方法の質問はもちろんこのスレの守備範囲だとも。
(正しいHTML的にはaction="#"とかにしとくことを勧めるよ。)
ただし、getにするとURIの一部として渡したパラメタが全部見えてしまう
が、それは許容されるのね?後でそれが嫌だとか言い出されても困るし。
うん。 ってことで解決済みにチェック、っと。 つーか それだったら、わざわざ form 使わなくても、 location.href で飛ばせるよなー、なんて。 まあどうでもいいことだけど。
GoogleAdsenceを外部(.js)から読み込ませたいのだが どうすればできますか?
色々と教えてもらったのですがやはり 値の取得が上手くいかないです。 でも諦めずにこつこつやっていこうと思います。 ありがとうございました。
>>40 getの場合は「alert(location.query);」とか実行したら
パラメタ一式が見えると思うがどうかね。
>>39 GoogleAdsenceってどういうHTMLを書くことになってるの。
そのHTMLが固定だったらそいつをdocument.write()するか
innerHTMLで突っ込めばいいと思うが。
>>41 location.search じゃないっけ。
>>39 金が欲しいなら、それに見合うくらい、自分で苦労して勉強しとけ。
>>42 そうだね、location.searchが正しい。何書いてんだろ洩れ。
IE前提で Form のボタンあたりからローカルアプリを実行して、結果をもらう。 やりたいことはこんだけ。ブラウザのセキュリティのワーニングはシカトぶっこく前提で。 で、 <script language="JScript"> function exec(command){ var wsh = new ActiveXObject("WScript.Shell"); wsh.Run(command); }; </script> <input type="button" name="button1" value="button1" id="button1" onclick="exec(...)"> で実行ができるのは分かってるんだが、実行アプリの標準出力をもらうのは WSH 的には run じゃなくて exec じゃないと無理だべ? しかも exec はブラウザからは実行できないと思うのですが如何に!? 教えてエロイ人!
Operaで右クリックイベントを取得する方法はやはり全くないのでしょうか? 決して右クリック禁止にしたいわけじゃありません・・・ この際、コンテキストメニューは表示されてしまってもいいのですが。
46 :
Name_Not_Found :2005/06/20(月) 13:09:36 ID:4mMrybld
MACアドレスを取得できる?
>>46 できません。
>>45 別に普通にやって取れるんじゃないの。O7で(メニューの後に)alert出たよ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript>
if(window.addEventListener)
window.addEventListener('click', function() { alert('???'); }, true);
else if(window.attachEvent)
window.attachEvent('onclick', function() { alert('???'); });
</script>
<body>
<p>ABC</p>
</body></html>
>>47 むかしあなたのコードで
var x = document.documentElement || document.body;
if(x.attachEvent) x.attachEvent(....); else x.addEventHandler(...);
というコードを見たんですが、
なぜdocument.documentElement→document.bodyの順にしたのかを教えてもらえませんか?
>>47 じゃないけど、よく覚えてるなーそんなこと。
確かに document.body より document.documentElement のがしっくりくるよな。
標準モード > 互換モードっていったとこかねえ
>>49 なんとなく覚えていて。具体的にどういう意味があるのか気になっていたんです。
var x = document;
var x = document.documentElement;
var x = document.body;
x.attachEven/addEventListener(...)
これらの挙動に違いってあるんですか?
>>45 ,47
いや
document.addEventListener('contextmenu', function () { alert(12345); }, false);
こういうのでしょ?
Operaじゃできないんじゃない? だってOperaだし。
>>48 それはですね。あの時まず「一番外側のエレメントでイベント取りたい」と
思ったわけですよ。で、それはdocumentElementでしょ。ただ互換モード
の人がそれを貼った時に動かないとやだな、と思ってdocumentElementが
ないときは代わりにbodyと。それだけです。今回は「窓の」クリック取る
って話だったんでじゃwindowでいいかなと。大した理由じゃなかったり
します。しかしそれにしてもよくご記憶ですね。
僕のOpera7.5だと
>>47 でアラート出ないのはどうして?
>>53 WinIEの場合は標準モード互換モード関係なくdocumentElementは存在し、
一番外側のエレメント(HTMLエレメント)をさすんだけど?
documentElementが存在しないIE4のことも考慮に入れてるのかな。
>>55 そうなんだ、昔ブラウザによってはdocumentElementがなかった頃
はじめた習慣で現在は無意味ということだな〜。
59 :
Name_Not_Found :2005/06/20(月) 17:56:59 ID:7uxP/kAl
<input type="text"><button onClick="イベント">ボタン</button> としたときにボタンをクリックすればイベントが発生するのですがenterキーを押すと入力もキャンセルされてしまいます。enter押してもイベントが発生するにはどうすればいいですか?
>>58 ありがとうございます。
> まず標準を見るのが吉だな。
全くです…
61 :
60 :2005/06/20(月) 18:18:42 ID:???
って試してみましたがそれじゃ困るのです。 仕様によると、event.mouseは > mouse events caused by the depression or release of a mouse button の場合にしか定義されていないのですが、 私は今onmousemoveのハンドラ中でなんとか取りたいと思っています。 というのも、ドラッグ&ドロップでマウスをドラッグしたまま Windowの外にカーソルを出してリリースした場合、 そのリリースイベントをキャッチすることが出来なくて困っています。 せめてonmousemoveの最中に今マウスボタンが押されたままかどうかを 判断したいのですが、そういうことはGeckoでは出来ないのでしょうか。 onmousemoveハンドラ中でevent.mouseをチェックすると常に0でした。
タイトルをクリックすると閉じたり開いたりするメニューを作りたいのですが、 IEでは動くもののNNやFireFoxでは動きません。 他のサイトを見て作ったので仕組みも良く分からず…。 色々なブラウザに対応した同じ仕掛けはできないのでしょうか。 flag = new Array(); function tree(num){ com_list = document.all.item("com"); if(flag[num] == 1){ com_list[num].style.display='none'; flag[num] = 0; } else{ com_list[num].style.display='block'; flag[num] = 1; } } というスクリプトを外部に置いて呼び出した後、 <a onclick="tree(0)">カテゴリータイトル</a><br> <span id=com style="DISPLAY: none"> <a href="a.html">aaa</a><br> <a href="b.html">bbb/a><br> <a href="c.html">ccc</a><br> </span> という記述で隠しています。
>>62 document.allはIEのみ。document.getElementByIdを使って書き直せばいいはず
どうでもいいけど、document.all.item("...")って配列を返すんだ?その仕様はしらない
64 :
sage :2005/06/20(月) 18:34:18 ID:kA6CLylW
質問ですが・・・・・ createPopupで作成した、ポップアップウィンドウのスクロールを 親ウィンドウのクリックか何かでscrollTOができないでしょうか?
>>62 document.all.item("com")をdocument.getElementById("com")に。
参考文献でIE専のものを見ないように注意すればそんなことに
はまらないで済むんだけどね〜。
>>61 やりたいことは分かったけど結構難しいかもねー。X Windowとかは
passive grabというのがあって、ある窓の中でボタン押したら窓の
外へ出てもボタン離すまでは追跡できたりするんだけど、そいうの
までDOM2 eventでは対応してなさそうだしね。
>>49 |
>>47 じゃないけど、よく覚えてるなーそんなこと。
あー、俺も覚えてるよ。volいくつなんてのはわからんが、彼氏が
var x = document.documentElement || document.body;
んとこで、bodyをboydってミスタイプしたんだ。メチャクチャむかしのこと
じゃない。
67 :
ラブ天使 :2005/06/20(月) 18:52:28 ID:ikioU+4S
ウン子やロウ
68 :
45 :2005/06/20(月) 19:02:19 ID:???
>>47 ありがとうございます。
ただそれだと左か右かの区別がつかないのと、Opera8.0では右クリは反応しませんでした。
やはり右クリ禁止を意地でも排除するところにOperaはアイデンティティを見いだしているのでしょうか・・・
もそっと調べてみます。
69 :
62 :2005/06/20(月) 19:10:05 ID:???
>>63 >>65 ありがとうございます。IE専用なのですね。
document.getElementById("com")に書き直してみましたが、
今度は動かない上にIEでもエラーが出てしまいました…。
エラー:'com_list[...]style'は Nullまたはオブジェクトではありません。
>>64 createPopupで作った窓は素性が悪くていろいろやりたいことが
できなかったという印象しかないな。普通の窓にすることを勧めたいが…
>>59 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function key(e) { if(e.keyCode == 10 || e.keyCode == 13) test(); }
function test() { alert(document.forms.f0.elements.i0.value); }
</script>
<body>
<form name="f0" action="#"><p>
<input name="i0" type="text" onkeydown="key(event)">
<button onclick="test()">Test</button></p></form></body></html>
71 :
45 :2005/06/20(月) 19:16:28 ID:???
>>69 document.getElementByIdは1つしかエレメントを返さないので配列だとエラーになります。
この場合はdocument.getElementsByNameでできると思います。
ただし、その場合HTMLの方は
<span id="com" name="com" style="DISPLAY: none">
とname属性も併記しる必要があります。
あ、名前消すの忘れた・・・しかも併記汁・・・
73 :
60 :2005/06/20(月) 19:25:16 ID:???
>>68 Operaの右クリック取得は面白そうだからちょっと調べてみます。
何かわかればここで報告しますね。
74 :
62 :2005/06/20(月) 19:27:35 ID:???
初心者ですみません。document.getElementById("com")でぐぐったら 色々なパターンのソースを公開してくださっているサイトを見つけることができました。 これらのサイトを見て少し勉強します。ありがとうございました。
>>70 普通の窓だと、親を入力しながら子を同時に見れなかったので
それで、createPopupで・・・と考えてみたのですが・・・・
createPopupの中にFRAMEやIFRAMEを設定して、強引にSCROLLかけようかと
したがFRAMEやIFRAMEのurlが表示されず。
popup先にwindows.nameを設定して、
alert(windows.name)で見て、nameがあるのを確認して
scrollToを行なってみましたが
Nullまたはオブジェクトではありませんってでるし
何か、方法無いものでしょうか?
>>75 「同時に見れない」というのがよく分からないけど。ポップアップの
代わりにレイヤー作ってそこにiframeを入れるとかもあるんじゃないの。
ともかくcreatePopupのことは私はそれ以上何も知らんので。
>>75 と
>>77 にひとこと
「見られない」だろ。オレはな、ら抜きが大嫌いなんだ。以後気をつけろ!どアフォ
>>78 にひとこと
何が「ら抜きが大嫌い」だ。オレはな、お前が大嫌いなんだ。以後気をつけろ!どアフォ
日本語の話題はスレ違いだからどっかよそで頼むわ。
>>78 らそられらはらもらうらしらわらけらならからっらたらうさぎのダンス。
とりあえず
>>75 はiframe検討しるで一旦終了
次Go
イベントリスナーでクリックしたところの要素ノードを取得できるの? できるなら何使えばいい?
Opera7.0 で <div name="test" id="x"></div> <script> alert( "name:" + document.getElementById("x").getAttribute("name") ); </script> が正常に動作してくれません。アラートは"name:"となり空文字列が返っています。 element.attribute.getNamedItem("name") でも同様に取得できませんでした。 一体Opera7.0ではnameアトリビュートをどのように取得すればよいのでしょうか? ちなみにIE/Geckoでは両方とも動いています。
>>77 はい、同時に見れないとは、親ウィンドウをクリックすると
子ウィンドウは親の下に隠れてしまうからです。
子ウィンドウを常に前面に出すと親ウィンドウで入力できなくなるし・・・
レイヤも試したのですが、フレーム外では表示してくれないので
createPopupではと考えました。
>>83 前スレの624を見ろ。
>>84 それは喪前が悪い。HTML的にはdiv要素にname属性はない。
だから取れないんでしょ。
>86 ああ… そっか、たしかに無いっけ。classかidを使うしかないのか。 idの重複は許されていないからclassかぁ… 情報ありがとう。Operaの対応はぬるい実装が許されないなぁ。
どうなんだろう。ゆるいUAばかりだと自分を甘やかすから そういう厳しいUAも必要なんじゃないかな?
>>89 そういう意味で88を言ったつもりでした。
Operaに対応しようとするといい加減さが許されないから
作っていて刺激がある。8.0だとそうでもないけどね(笑)
91 :
Name_Not_Found :2005/06/20(月) 21:46:30 ID:7LIeUvxg
<div id="obj">1</div> <div id="obj">2</div> <div id="obj">3</div> で var x = document.getElementById("obj")[1].innerText; とすると、2が取れる訳ですが、 いままでIEの事しか考えてなかったのですが、Firefoxにも対応させようと 思って書き直してるのですが、どうしてもエラーになります。 なんとかならないものでしょうか? やはりIEほどにはDHTML対応がすすんでいないのでしょうか? しょっぱなから、書き直す気が失せてきました・・・ちゃんと対応してほしいです・・・
>>91 IDは「HTMLの標準として」同じ名前を2個所以上でつけてはいけない。だから
<div id="obj0">1</div>
<div id="obj1">2</div>
<div id="obj2">3</div>
として
var x = document.getElementById("obj" + i).innerHTML
を使う。ちなみにIEは独自仕様満載。だからIEを基準にプログラム作ると
どうしてもIE専になってしまう。普段製作するときFirefoxなどを常用する
ことを勧める(エラー表示もその方がはるかに見やすい)。その後でIEで確認
して完成とすればいいわけで。
喪前がIE専大好きならこれ以上何も言わないから帰っておとなしくしてろ。
>>91 HTMLの仕様で、idが同じelementの存在が許されていない。
要するに、<div id="obj">はHTML中にひとつしか存在してはいけないのだよ。
それを理解できないノータリンのためにIEが勝手にDHTMLを拡張してあげているだけで、
文句を言われるのはIEでもFireFoxでもなく仕様を読まない馬鹿であるべき。
>91、丸投げスレに来たらやり方教えてあげるからそっちに行ってくれ
IEの方が標準規格への対応はずっと遅れているヨ! その代わりにIEに満載なのが「見た目便利で一度はまると容易には 脱出できないMSワールド」なんだヨ!
> Operaに対応しようとするといい加減さが許されないから Operaの実装も結構いい加減だけどな。 しかし何で同じ id 書きたがるんだろうな。 class でいいじゃん。 自前で document.getElementsByClassName とか作れば早いしさ。
>>95 とある "初心者" の質問が "低レベル" か "高レベル" かなんて、一体どこの誰が保証してくれるのかね?
誘導したがるが、結構線引き難しいと思うけど。
98 :
78 :2005/06/20(月) 22:25:23 ID:???
>>79 :オレはな、お前が大嫌いなんだ。
って、おまえ、オレのことしっとんのか?
論理性がねーだろ。だから、バカだってんだよ。
それからな、人にモノ言うときは、自分が75なのか77なのかはっきりさせろ。
卑怯な奴だと言うのは、同じ事を繰り返す幼稚さで十分わかるが。
↑おもろいな、ここの名物なのか? あ〜ちなみに75でも77でもありませんから。 と挑発してみると。。?
まぁ荒れてもいいけどね。スルーするし
> 同じ事を繰り返す幼稚さ 人のこと言えないよなあ・・・。 バカだろうがなんだろうが、"ら"をつけようがつけまいが、それはその人の勝手じゃん。 あんたその人の何? 親か子供か親戚か先生か指導教官? 人に助言するのはいいけど、人をバカにするのはバカのすることですよ。 そういう俺もバカなわけだがね。 とりあえず、バカにするならするで、他の人の笑いのとれるくらい面白く書いてちょ。
こいつらわざとやってるんじゃないか?
月曜はストレスが溜まるのよ
>>97 >>104 簡単じゃん。
>>2 を満たしてないなら低レベル。
とにかく
>>2 をすべて満たした(個人的主観でいって)低レベルな質問に
お目に掛かったことがないもんで、わりと確実な基準だと思うんだが。
>>96 私の場合、はじめたばかりの頃は、classはスタイルシートのセレクタにのみ
使う物だと思い込んでいました。
他に、class="a b"とか複数指定の状態を考えると面倒になるとかですかね?
>>107 なにせ自分がマークアップするんだから好きなように使えば。
洩れはclassには名前1つしか指定しないよ。いつも。でもどっちかと
いえば、IDに規則的な名前(obj0、obj1、…)つけるのが好みなんだが。
それでいくつあるか自動的に調べて配列にするのも別に簡単だし。
function getElementsById(id) {
var e, a = new Array();
for(var i = 0; (e = document.getElementById(id + i)) != null; ++i) a.push(e);
return a;
}
id に配列みたいに番号振る、なんてストリクトじゃないよ。 ・・・って strictスレの人がゆってた。 class だって、別に document.getElementsByClassName = function (name) { var tags = document.getElementsByTagName('*'); var tags_leng = tags.length; var gets = new Array(); var reg = new RegExp( '(?:^|\\s)' + name + '(?:$|\\s)', '' ); for (var i = 0; i < tags_leng; i++) { if (tags[i].className && tags[i].className.match(reg)) gets.push(tags[i]); } return gets; } って書くだけジャン。 まあどう書こうが好みだけどさ。
[object].all()はIE専ではないだろが。 Operaも実装している。
だからといって薦めてるわけじゃないし、好き好んで実装したわけじゃないと思うけど。 all() 使ってるやつが多すぎて仕方なくだろ。 だから何?って話。
>>110 おぉ、これもいただきます。 m(_ _)m
正規表現も勉強しないとなぁ。
多数が実装すればそれが標準。 そこでガンガレ 極リベラル一派もコピペ厨もウザイ 兵隊はウンチク垂れる必要ナシ。
>>110 こんな重い処理やらせるならstrictなんて糞喰らえと思っちゃうな・・・
>>110 ,115
何回も処理を行うなら、一旦別のグローバルな配列に、class を持った要素のリストを保管しとけば、探すの早くなりそうだな。
まあ innerHTML したり ノード追加したりしたら正確じゃなくなるけど。
>>108 ですら重いと感じてしまうなぁ。
俺はclassをCSSのセレクタ専用に使っているから、
Script上でIDの末尾にそのelement情報を示す文字列を付け加えるようにしている。
例えばID:consoleで、draggableでかつresizableだった場合は
<div id="console.draggable.resizable" class="blackBG">...</div>
そのエレメントがdraggableかどうかはelement.id.indexOf(".draggable")!=-1で判定できて、
そのエレメントのIDがconsoleかどうかはelement.id.indexOf("console")==0 で判定できる。
ただこれだと、せっかく標準でついているdocument.getElementByIDがうまく使えないんだよね。
>>116 昔、実験した所、[object].allも何回も呼び出す場合は、
変数に入れた方が速くなった。
>>117 それじゃCSSすらまともに指定できねえ
>>119 CSSは普通にclassで指定すればいいはずだけど、問題あったかな?
DOM構造に付加情報を加えようとした時にIDとCLASSしか使えないのは
結構痛い制限だと個人的には思っています。
特に、CSSがCLASS文字列をそのまま利用するシステムなのが残念。
> CSS #id { } とか #id.class { } とかいう書き方知らないの? id に ドットとかコロンとか着いたら困るわけ。 バーかアンダーバー程度にしといてよ。
自分で勝手にそうすりゃいいのに。
>>121 知らなかった…情報サンクス。
アンダーバーにせよコロンにせよ、その方法でCSSを指定するなら
自由に自分で属性を追加できるというメリットは一切無くなってしまうんだよな。
違う、
>>117 が誰かにそういう風に教えたりしたり、
>>117 自身将来困るだろうから言ってんだろ。
自分の利益不利益とは関係ない。
何グチってんだw
#console\.draggable\:resizable { ... }
おれ、ここでオトナになったんだもん。
できればここでIDに拡張性を持たせたまま #console {...} という書き方が出来るとスマートなんだけど、無理か
[id^="console"] { ... } [id*=".draggable"] { ... } IE8では対応してるかなー
誰か scrollHeight と offsetHeight の違いについて分かりやすく説明して, please document.documentElement か document.body のん orz
条件式で if (i%3){........} のとき、 if (i%3==2){........} のケースもありますよね。でも、これがtrueとされて{.....}内が 実行されるのはどうしてですか? ブーリアン的には、0で偽、1で真の2つだけだと思うのですが。
number は 0以外は全て true になるのわからんのか。 boolean なら true / false の値を持つしな。 typeof(hoge) で調べてみ。
133 :
129 :2005/06/21(火) 02:59:43 ID:???
>>132 いやー、何かねー、IEの offsetHeight の仕様と、Gecko/Opera の仕様と違ってたんで困ってたのだよ。
リンクくれたM$の仕様書見て納得したw
IEは doc.body も doc.documentElement もCSSで言う overflow:auto/scroll; height:画面サイズ; な扱いなのね。
とにかく THX :-)
遅いけど
>>61 そう"押されたままかどうか"なんてイベントを必要としなくても、
window の外に出たかどうかは、
obj = window か document.body か document.documentElement;
obj.onmouseout イベントで、カーソルの座標の値がマイナスになることを使えば取得できるわけだから、
マウスを押したときにフラグたてて、離したらフラグ外して、
もし窓の外にでたなら、そんときフラグがたってたら全部ドロップ、みたいなことさせちゃえばいいんじゃない?
普通そうやると思うんだけど、どうなのかね。
>>97 >>98 は、多分俺と間違って献花売ってんだと思うよ。
月曜その時間に俺がいないことは非奨励だが保証されているはずw
前スレでずいぶんラ抜きしたしな。猜疑心の固まりか?
そして君がした初心者一掃への疑問が、彼に一線を越えさせたんだよ。
>>98 は自分の嗜好に合わない質問を単に「低レベル」と言っているだけ。
ここもそうだが、前にも何度かあったよな?アンチM$で低レベル呼ばわりしてんの。
まあそういうことなんで、あんまり気にすんな。
こいつら、自分の嗜好通りに名無しで質問してやりゃ、ちゃんと答えてくれるぜ。
(自他認める)性格の悪さだが、一端の知識はある。利用しない手はないぞ。
<!DOCTYPE どうでもいいが洩れはら抜きよく使うよ。>
>>98 が誰かは知らん。でも名無しなんで誰だっていいじゃん。
だからそもそもスレ違いな喧嘩はスルーで。
JSがらみの内容なら妥協しないつもり。ちなみに性格は悪い(w
>>136 ,others
さあ、過去にこだわらず未来に向かってともに有意義な関係を築こう。
隣人を愛し、きょうまた素晴らしいJavaScriptの発見がありますように。
融通が効かず不器用だが実はイイヤシなんだな。。 。。なんて書くと彼にサブイボ位立てられるかな? 性格は悪いが、JSには妥協しない 名物おじさんだと思う事にするよ。
>>3 の FAQ2 に近い話ですが、
Web 以外でならば、JavaScript で、ローカルのファイル操作をする方法、
もしくは、外部コマンドや WindowsAPI を利用する方法はありますでしょうか?
>>134 > obj.onmouseout イベントで、カーソルの座標の値がマイナスになることを使えば取得できるわけだから、
Geckoではならないみたいです。Opera8.0でも下方向ではマイナスになりませんでした。
IEで、標準モードと互換モードで具体的に挙動が変わる部分をまとめたサイトとかないのかな
>>142 主に違うのはCSS廻りで、JSから影響があるのは既出のbodyの
位置づけが変わる点くらい。CSS廻りの変化についてはそれこそ
ぐぐれば色々読めるよ。
Operaで選択範囲の禁止をしたいのですが、うまく行きません。 まず誤解が無いように書いておきますが、選択範囲の禁止をしたいのは 中の情報が盗まれないようにするためではなくて、 画像ファイルをダブルクリックすると詳細を表示するプログラムを作ったのですが Operaだとその際に周りのテキストが選択されてしまい、同時にデフォルトでは Hotkey Popup Menuが出てきてうっとうしいのをなんとかするためです。 document.getElementById("divid").onselectstart = function(){return false} document.getElementById("divid").onselectstart = function(e){e.preventDefault();return false} document.getElementById("divid").ondblclick = function(){return false} document.getElementById("divid").ondblclick = function(e){e.preventDefault();return false} などを試してみましたが、ダブルクリックで選択範囲を出さなくすることは出来ませんでした。 Operaではどのようにしてイベントをとめることができるのでしょうか
145 :
Name_Not_Found :2005/06/21(火) 13:57:35 ID:Me0f6PpO
君いつもいるね。いつもそんなことばかりやってるね。気付いてるかい? はっきり言って誰も君のこと相手にしてないよ?わかってるの? それって、自分ではおもしろいと思ってやっているんだろうね。 きっと、薄ら笑い浮かべて、無意味な書き込みしてるんだろうね。でもさぁ、 君以外の人には全然おもしろくないんだよ。 もしかして自分でもおもしろくないのに機械的にカキコしているんじゃないの? 自分でも何してるのかわからなくなってるんじゃないの? 家族からも近所からも煙たがられているんだね。 友達も彼女もいないんだね。会社でも浮いているんだね。どこに行っても 相手にされないんだね。ネットでも無視されてここに流れ着いて来たんだね。 ここでさえ相手にされてないじゃん。どうするの?かわいそうに。 もう駄目じゃん。生きていても何もいいことないよ? どうせ誰からも相手にされないんだから、死んだ方がいいんじゃない? 相手にされないから奇抜な言動で注目を浴びようと必死なんだね。 始めは少し注意を向けてもらったのだろうけど、もう飽きられて完全に 無視されているね。それって迷惑なんだよ?気付いてる? おもしろくもないのに、意味不明なカキコされても目障りなんだよね。 さようなら。この世から消えてくれ。君いるだけで迷惑。 せめて最後ぐらい人里離れた山の中で自殺してね。
Opera の JS 実装って公式ソースにはないのですか?
東京に行ったことはあるか? 摩天楼の並ぶ都心を歩くと、さすが日本の首都だと思うぜ。 東京の都心をぐるっと取り囲む、山手線っていう鉄道があってな。 池袋とか新宿とか渋谷とか、都心の繁華街を結んでるんだけど、これがいつ乗っても混んでるんだ。 よくみんなあんなラッシュに耐えてるよな。感心するぜ、マジで。 そして、山手線の内側には、都心全域に網の目のように張り巡らされている地下鉄があるんだ。 全部で12路線もあってな。便利だけど乗換えとかが結構ややこしいんだな。 ところで、その地下鉄の中に、都営三田線っていう路線があるんだ。 正式名称を東京6号線っていってな、去年の秋、三田から目黒まで延長されて、 東急目黒線と相互直通運転するようになったんだ。 直通電車に乗れば神奈川県の武蔵小杉まで行ける。 将来的にはもっと先まで乗り入れるらしいぜ。便利になるよな。 さて、例えば東京駅からこの都営三田線に乗るとしよう。 営団丸ノ内線で池袋方面に一駅の大手町で乗り換えるのが一番分かりやすいけど、 大手町なんて大して遠くもないから一駅くらい歩いてもいいだろう。運賃ももったいないしな。 目黒方面に行きたいとき、運良く武蔵小杉行きが来ればいいんだけど、 半分は途中の白金高輪で折り返しちまって、それより先に行きたかったら 隣のホームの営団南北線の電車に乗り換えないといけない。 ちょっと面倒くさいな。だからここでは逆方向の電車に乗ることにしよう。
大手町の次は神保町だ。書店街で有名だな。 都営新宿線と営団半蔵門線に乗り換えられる。その次は水道橋。 中央線に乗り換えられる。次の春日はつい最近までなんでもないただの駅だったけど、 去年の12月に都営大江戸線が開通したおかげで、後楽園の丸ノ内線と南北線に 乗り換えられるようになった。もちろん大江戸線にも乗り換えられる。 春日の次は白山、千石と続いて、巣鴨に着く。ここからは山手線の外側だ。 巣鴨の次、西巣鴨は都電荒川線の新庚申塚、その次の新板橋は 埼京線の板橋や東武東上線の下板橋にそれほど遠くない。結構便利だぜ。 まあ、JRも私鉄も、都心から伸びる鉄道はほとんどみんな放射状になっているから、 板橋区役所前、板橋本町、本蓮沼と進んでいくうちに他の鉄道からは離れていくけどな。 志村坂上を過ぎるとすぐに地上に出て、志村三丁目からは終点まで高架線だ。 はっきりいって、これじゃあもう地下鉄じゃないよな。 蓮根の次の西台の横には三田線の車庫があって、ここから出てきた電車は 次の高島平から発車する。終点の西高島平まではあと二駅だけど、 その一つ手前の新高島平で降りておこう。 新高島平の改札口を出てすぐ左に昇り階段がある。 これを昇ると歩道橋に上がれる。間違えて駅の外に出ちまっても、 左の「高島平3・4丁目方面」に出てすぐ左にあるから、そっちから行けばいい。 歩道橋を渡って、左側に下りる。下りてから駅や道路から離れる向きに進むと、 すぐ高い建物に突き当たると思う。そうしたら左へ進む。 そのまましばらく行くと右側の建物が途切れて、次の建物が見えてくる。 たぶん壁には3−11−1っていう標示があるはずだ。 その建物の、こっち側から3分の1くらいのところにエレベーターホールがある。 エレベーターは3台あるけど、行ける階が違うから、右の9号機じゃなくて左の7号機か 真ん中の8号機に乗ろう。そのエレベーターでは8階から14階に行けるはずだ。 とりあえず14階まで上がろう。ちょっと遅いエレベーターだけどまあ我慢してくれ。
そして14階から廊下に出るんだけど、もし三田線の車窓から この高島平団地をよく観察していたなら、あることに気がつくはずだ。 そう、この建物だけ、廊下の外壁に鉄格子がついていないんだ。 だから下界の風景が何にも邪魔されないで、よく見える。 結構な眺めだからよく目に焼き付けておくといい。 そう、顔を出して、体を十分に乗り出して。 そしてそのまま飛び降りて氏ね。
誤爆スマソス
>>146 Operaのドキュメントって「標準のうちこれとこれは実装してます」
なんてのばっかりで、具体的に何と何があるのかがよく分からない。
原因はヒマだということだな、おそらく。おれにはそんな時間もない。 (「大」企業のクライアントは要求がシビアだしなあ) 良心があるなら、削除依頼を出せ。そして二度とくるな。
>>153 まさにそれじゃ足りないんだよ。onselectとか
>>144 が試している
onbeforeselectとかどっかに書いてあった? 少し探したけどあきらめた。
>>141 当たり前だーw IEが変なだけ。
それくらい 座標が doc.scrollWidth or doc.scrollHeight を超えたかどうかとかで、自分で応用して判断してくれヨ。
>>144 ,151
うん、これだからOperaの変な実装には後ろに腹が立つんだよな。
そういうところは古いOperaから変わらない・・・。
Opera6 じゃ obj.nodeType すら取れないし、
Opera8になっても、iframe や object が zindex:∞; みたいな挙動するのは直ってないだろ?
まあ無理なときは無理だから諦めれ。
そのうちGeckoに近づくことを祈るよ・・・ orz
>>144 あれ? Geckoで選択範囲の禁止とか解除ってできる?
>>156 vol.36の594にサンプルを貼ったはずなんだけど…過去スレ検索どこだっけ?
>>155 ピスガの頂に登って、目を上げて西、北、南、東を見よ。
あなたのその目でよく見よ。
あなたはこのヨルダンを渡ることができないからだ。
159 :
Name_Not_Found :2005/06/21(火) 18:17:33 ID:haVkWZtU
質問させてください。 var funcArr = new Array(F,G,H,I,J); for(i=0;i<funcArr.length;i++){ eval(function funcArr[i](){document.getElementById('myID').innerHTML='string-x';}) } というようにして関数をループで生成することは出来ないものなのでしょうか?
>>157 >>6 の見たけど、v36の過去ログ切れててないなあ・・・。 もっかい貼って (゜∀゜)
>>159 なぜループで生成したいのかもっとちゃんと書いたら。実は関数は
1つで済むと見たね。
>>162 おー、わざわざありがとう! 助かったよ(`・ω・´)
>>157 > v36->594
ヒントThanx!
とりあえず、
window.getSelection().collapseToStart(); より、
window.getSelection().removeAllRanges(); のがキレイだったから、
こっちを使うことにしたよ。
IE は onselectstart で return false するのが一番早いのやも。
>>156 Geckoの場合はダブルクリックしても変なコンテキストメニューが出てこないからいいのですが…
コンテキストメニュー出さないようにhtml構造をうまく変えてがんばって見ようかな
Safariでdblclickイベントをハンドルできなくて困っています。 Safari1.3なのですが、 <html><head><title>x</title></head><body><script> document.body.addEventListener( "dblclick", function(e){alert("x");}, false); </script></body></html> 上のイベントがどうしても発動しません。 dblclickをclickに変えたらうまく行くし、document.body.ondblclickでもうまく行きます。 バグかと思ってネットをずいぶん探してみたのですが、見つかりませんでした。 いったい何が悪いのでしょうか。どなたか教えてください、お願いします。
167 :
166 :2005/06/21(火) 23:33:18 ID:???
補足です。 上のソースはそのままだとbody領域がないためFireFoxでは動かないので、 firefoxで動かすためには次のようにしてみてください。 <html><head><title>x</title></head><body><script> document.body.addEventListener( "dblclick", function(e){alert("x");}, false); </script><div>double click here</div></body></html> こうやったところでSafariでは動かないのですが・・・
>>17 > 「//-->」は正しくなくて「// -->」とスペースが必要。
おいおい……
>>166-167 そういう場合は単に「dblclickが実装されてない」んでしょ。自分で
onclickから実装したら?(時刻と位置を記録して短時間で同じ位置の
クリックをダブルクリックと解釈)
>>168 すいません、別の問題(SGMLコメント中で--でコメントから
抜けられる奴)と混乱していたようです…
>>169 「ondblclick は動く」 って書いてあるじゃん。 よく読みねぇ。
>>166 doc.body 以外でも動かないん? 普通の<div>要素とかで。
だからondblclickで済まない何かがあるんだろうなあと思って。
>>166 ちなみにDOM2 Eventsではdblclickイベントなんてものは定義されてなくて
代わりにclickイベントでEvent#detailの値を見ることになってるんだが
(2ならダブルクリック)それでやってみるとどうなる?
174 :
159 :2005/06/22(水) 02:02:07 ID:J0RXYUZa
>>160 さん,
>>163 さん
レスありがとうございます。
別解とかどうしてもループで生成したいということではなくて、単に
function funcArr[i](){...
の関数名と()の部分をくっつけられないかということです。
funcArr[i]+()なんてのもないだろうし・・・
createTextNode()の引数ってDOMStringなんでしょ。 数字もOKなんだね! 計算した数字をtoString()し忘れてcreateTextNode()しても アラートでなかったので色々やってみたら、 createTextNode(eval(x))これすら通ったよ。 IEが緩々で、ただの独自仕様ということはないよね?
>>174 どうもやりたいことがよくわからない。
関数オブジェクトを要素に持つ配列が作りたいの?
>>175 JavaScriptには型の自動変換という仕組みがあるのよ。
>>175 何をしようとしてるのかいまだに分からんが、こういうことか?
var funcArr[i] = function(){
document.getElementById('myID').innerHTML='string-x';
}
ますます
>>163 臭いがな。
>>159 ,
>>174 んー
聞いた感じ、結果として、
function F () { document.getElementById('myID').innerHTML='string-x'; }
function G () { document.getElementById('myID').innerHTML='string-x'; }
function H () { document.getElementById('myID').innerHTML='string-x'; }
function I () { document.getElementById('myID').innerHTML='string-x'; }
という関数ができればいい、という解釈だったんだが違うの?
funcArr[i] 以外を "〜" + funcArr[i] + " 〜 "で囲むのと違う?
funcArr[i]() だと、funcArr[i] を関数として実行しちゃうので困ってる、とかいう。
日本語でちゃんと詳しく書いてくれないと こっちが困るよw
>>166 俺も知りたい。
>>173 がいってるのは、
document.body.onclick = function (e) { document.body.innerHTML += e.detail; }
みたいなことやって、ってことかね。
>>178 Fは、’F'と違って変数なんで、 "〜" + funcArr[i] + " 〜 "で囲んだような
文字列ちっくな処理してもダメなんじゃない?
文字列に関数の参照値って保持できるの?
>>174 それだったらまさに
>>176 だよな。
>>178 もしそうなら「F = G = H = I = J = function(...) { ... };」
>>173 > DOM2 Eventsではdblclickイベントなんてものは定義されてなくて
ondblclick というイベント属性が HTML4 の DTD で定義されているから、
dblclick は HTMLEvents で定義されている(とみなされる)。
>>166-167 document.body.isSupported( 'HTMLEvents', '2.0' )
document.implementation.hasFeature( 'HTMLEvents', '2.0' )
のどちらかを調べれば良いだけで、
true の気配が全く無ければ簡単に諦められるのでは。
183 :
166 :2005/06/22(水) 09:11:49 ID:???
184 :
166 :2005/06/22(水) 09:42:40 ID:???
>>173 Event.detailの値ですが、
IE6:undefined
Opera:常に1
Mozilla & Safari:クリックなら1、ダブルクリックなら2
となっていました。
safariの場合だけclickのハンドラからdblclickを呼び出すべきか、
あきらめてondblclickを使うべきか難しいところですが、
とりあえず後者で記述して見ようと思っております。
質問です。 JavaScriptで印刷処理をしています。 処理プログラムは ID_BROWSER.ExecWb(6,10); (ID_BROWSERはブラウザオブジェクトです) としていますが、WindowsXP sp1では印刷ダイアログがでなかったのですが、 WindowsXP sp2からは印刷ダイアログが表示されるようになってしまいました。 印刷ダイアログを表示せずに印刷するため IEのインターネットオプションをいじりまわしてみましたが、 どうにも出来ませんでした。 印刷ダイアログを表示せずに印刷する方法ってないですか? (インターネットオプションでも他のJavaScript関数でもよいです) 良い方法などありましたら、どなたか教えてください。 宜しくお願い致します。
>>184 うわ、Opera7.5では detail : 2 になるのに 8.01 だと 1 なのな。 なんだこれ。
>>184 clickからdblclickを呼び出すならば、
addEventListener("click",function(e){if(e.detail==2)return dblClickHandler(e);},false);
というやり方が出来そうだけれど、
186を読むと将来の実装に恐ろしく不安が残るな・・・
ondblclickを使えるならばそちらのほうが良いかと思います。
>>185 そのような変更はセキュリティ対策(いたずら防止?)ぽいので
回避できなくしてありそうな悪寒。
Javascriptの文字列を、Shift-JISからUTF-8に変換したいのですが、 そういうことが出来る関数ってありますか?
>>189 JavaScript上では既に文字列はUTF-16になっているわけだが…
どっからShift-JISのデータが来るわけ?
>>190 XMLHttpRequest#responseTextです。
>>191 本当にShift-JISが来る?ちょっとやってみたが…MozだとUnicodeが
来るなあ。IEだと日本語が「ffff」になっている…なんでかね?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function load(uri, f) {
var r = null;
if(window.XMLHttpRequest) r = new XMLHttpRequest();
else if(window.ActiveXObject) r = new ActiveXObject('Microsoft.XMLHTTP');
if(!r) return false;
r.onreadystatechange = function() { if(r.readyState==4) f(r.responseText); }
r.open("GET", uri, true); r.send(null); return true;
}
function dsp(s) {
var r = "";
for(var i = 0; i < s.length; ++i) r += s.charCodeAt(i).toString(16) + ' ';
document.getElementById('d0').innerHTML = r;
}
</script>
</head><body onload="load('test.xml',dsp)"><div id="d0"></div></body></html>
--- test.xml --- ←もちSJISで入れてある
<?xml version="1.0" encoding="Shift_JIS"?>
<testdata>あいうえお</testdata>
>>192 sendの所でxmlをとらずに、テキストのjavascriptを読み込んでいるのですが、
safariだと内容が文字化けしてしまうのです。
IE、Mozillaは大丈夫なのですけれど…
>>193 だったら元ファイルをUTF-8にしとくのがいいんじゃない?それも駄目
なら日本語を使わない(文字リテラルを全部%uHHHHに変換しておく)。
ちなみにShift-JISをUTF-8に変換する関数は「ない」。
>>194 元ファイルをUTF-8にすると、safari以外のすべてのブラウザで化けます。
自分でSJIS->UTF8に変換するユーティリティを作らなければいけないのかな。困った。
>>195 ファイルのコード変換なら各種OS上でできると思うし、フリーソフトも
あるだろ。%uHHHH形式にするとかだったらJavaScriptでさっと作ればいいじゃん。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg() {
var r = "", s = document.forms.f0.elements.a0.value;
for(var i = 0; i < s.length; ++i) {
if(s.charCodeAt(i) > 255) r += '%u' + s.charCodeAt(i).toString(16);
else r += s.charAt(i);
}
document.forms.f0.elements.a0.value = r;
}
</script>
</head><body>
<form name="f0" action="#" onsubmit="return false">
<p><button onclick="chg()">変換</button><br>
<textarea name="a0" cols="60" rows="40"></textarea></p></form></body></html>
>>196 有用な情報ありがとうございます。
responseXMLならばうまく行くのは確認しているのですが、
opera7.0にはresponseXMLが無いかわりにresponseTextなら擬似的にエミュレート可能なので、
可能ならばoperaもサポートしつつsafariでも読み込ませられると良いのです。
>>198 そこまで調べてあるのなら最後はOpera/Safariのブラウザ判別では?
ちょっど枝分かれするだけでしょ?
>>197 いやファイル自体のコード変換自体はどうでもいい話なのです。
(でもそのコードは今後参考になりそうです。ありがとう)
元ファイルのJSをSJISで用意してresponseTextで読み込む->Safariで日本語文字化け
元ファイルのJSをUTF-8で用意してresponseTextで読み込む->IE、Mozillaで日本語文字化け
これが現状の問題で、どうしたものかなぁと。
いっそのことJavaScriptでSJIS->UTF-8変換ルーチンを作って、
safari上ではそれを使って変換しようかと思って195を書きました。
もちろん元ファイルのエンコードを変更したときには、
httpヘッダのcontent-typeのcharsetも変更しましたが駄目でした。
>>200 だから読ませるファイルを2つ用意してブラウザ判別で切替えれってば。
>>199 元ファイルを2つ用意することは出来ないという制限だと思ってください
(最終的にはそうやって逃げるつもりですが)
サーバから動的にJavaScriptを返してもらおうと考えているのですが、
サーバの開発は私ではないので、あまりサーバに負担をかけずに実装したいのです。
>>202 動的に生成ならなおさら、日本語を入れない(%uHHHHのみ使う)
のがベストと思うが。
>>203 おお、なるほど、そういう意味でしたか。197の意味を完全に取り違えていました。
早速試してみます。
UTF-8で用意して、MozやIE等responseXMLのある奴はそちらで取る。
>>203 うまく行きました。これは素晴らしい解決策です、助かりました。ありがとう。
207 :
Name_Not_Found :2005/06/22(水) 15:59:57 ID:O2qBFzVF
教えてよ!一つくらい知ってるでしょ? なんでそう文句ばっかり言うの!? 2ch最近見はじめたばかりっていうかパソコン始めたの先月だから 全然分からないの! 友達が分からないことがあったらここで聞けっていったからきたけど なんでこんな偉そうなの? 実際の社会ではこんなこと言えるのかよ!? わけわからん言葉ばっかり使いやがって!! むかつくんじゃおまえら!!
>>207 > 実際の社会ではこんなこと言えるのかよ!?
悪いが結構言う。
つか、だれ?
211 :
Name_Not_Found :2005/06/22(水) 16:48:13 ID:+MQwWH1p
質問です。 複数選択可能な選択リスト(<select multiple>)において、 現在選択されている全ての項目の value を取得するには どうすれば良いのでしょうか?
>>211 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var r = "", s = document.forms.f0.elements.s0;
for(var i = 0; i < s.options.length; ++i)
if(s.options[i].selected) r += s.options[i].text + ' ';
alert(r);
}
</script>
</head><body>
<form name="f0" action="#" onsubmit="return false"><p>
<select name="s0" multiple><option>A</option><option>B</option>
<option>C</option><option>D</option><option>E</option></select>
<button onclick="test()">Test</button></p></form></body></html>
>>212 しまった、valueではなくtextを取得してしまった。まあいいよね。
>>212 ホレ君は他の回答者からすれば 「どうよそれ?」 な回答も多いけど、
初心者質問者から見れば結構わかりやすいのかもしれんな。
そゆのもありっちゃありか。 ( ´¬`)y-
>>215 はい、もちろんソレを目指していますので。「どうよそれ?」な
御意見、歓迎しますよ。自分でも勉強になりますので。変数が1文字
つーのは、ちょっと脳に障碍があって2文字以上のが打てない(大嘘)
もうちょっと読みやすいソースコードさえ書いてくれたら言うことはないんだがな
>>215 ホレ氏はvol3ごろから知ってます。この質問スレでは余人に替えがたい人れす。
人をおちょくったり憂さ晴らしに暴言はいたりする回答者が多い中で、黙って
コードを「ホレ。」といって質問者の前に優しく投げ出すのは、なかなか出来
るものではないのれす。ウソだともったら、あんた、1か月やってみなはれ。
>218 まるで自作自演だな。
ここは技術者の集まりだろうから、もったいぶらずに 具体的に言った方が、すっきりするのでは? 私なら、極力シンプルにする事を考えて ・ダブルとシングルのクォートは統一する。 ・極力シンプルにする為にformは削ってしまう。(TransitionalならOk? ・DOCTYPE削っちゃ駄目? どうでしょ?
>>220 はっきり言って、どうでもいい。読みやすければそれで。
だめれす。 クオートは、普段はシングルだけど、 他の言語のクセで \t とか \n とか入れるときはダブルにしてしまうなあ。
DOCTYPE あるかないかで 標準/互換 が変わるから、明示的にあったほうがわかりいいかもよ。
224 :
220 :2005/06/22(水) 18:59:52 ID:???
あぁ、やっぱりDOCTYPEは、突っ込まれるのね。。
>>223 逆にDOCTYPEがないと動かないと誤解されるような。
互換性に問題あるときだけその旨明記すればいい。
> 互換性に問題あるときだけ 割と多いけどなー
>>226 JavaScriptの場合はdocument.body document.documentElementのみじゃなかったっけ?
宗教論争だけどDOCTYPEのないのなんてHTMLではないです。それ以上 Strict論者ぽいことは言わないけどさ。引用符はですね、HTML側は ""、JavaScript側は''で統一してます。そうしとくとon属性の中に 文字列含むコード書くときに普段と変えなくて済むから。まあ回答 コードのスタイルは回答者の裁量でいいんじゃない?そこまで指示 されたら回答するのが面倒すぎだから。
229 :
220 :2005/06/22(水) 21:19:04 ID:???
なるほどねぇΦ すっきりした。
>>228 実際書くHTMLじゃなくてここに貼るソースの話なのに・・・十分Strict厨の臭いがします。
だから「そこまでは」Strict厨みたいなことを言うという意味で。 嫌なら読み飛ばせば。おお2ちゃんらしくなった(w
こうやって書いてや、とかいう標記方法の基準ってあるん? 他の人のサンプルあんま見へんし、人それぞれとちゃう? でも突っ込まれると凹むんでこう書いてほしいっちゅうもんをまとめてな、 今度テンプレに載せてくれると助かるわ。勉強なると思うし。
>>232 まともな日本語を書け。話はそれからだ。
ま、いいんでない? 回答者の嗜好尊重で。自分流に改造できるくらいの脳力も 質問者にはあってしかるべきだし。
他人のサンプルを見ないところに問題があるんじゃないだろうか。 よいコード悪いコード見続けることで学ぶわけだし。そもそも よいコードってセンスの問題でスタイルはそんなに重大じゃない。 あとJS+DOMとかだとHTMLはどうしてもStrict厨かTransitional厨 になるよね。そうしないとDOM動かないんだからしょうがない。
>>220 formはstrictでもいらないよ?仕様書にも書いてある。
document.フォーム名.コントロール名とか
やってた名残で、postもgetもしないformでも書くように
解説されてんだろうけど。
submitしないなら全然不要。dom使えば無くても困らないし。
もちろんformはいらないよ。そういうんじゃなくて例のdivに nameつけたりとかそういう話のこと。ちなみに洩れがform 書くのはdocument.forms.フォーム名...を書きたいから。 そんなのは人の趣味に任せろってば。他人の趣味に鑑賞すな。 標準に外れたことは干渉してもよい(ry
IEの「ツール」→「インターネットオプション」→「プライバシー」タブ→ポップアップ ブロックの「設定」→ 「許可する Web サイトのアドレス」や、 「プライバシー」タブ→設定内の「サイト」→サイトの管理内の「Web サイトのアドレス」に アドレスを追加できるスクリプトはどのようにすればよいのでしょうか?
>>241 そんなことできるの?スクリプトで自動的にできちゃったら
セキュリティ機能なんか意味なくなるじゃない。
そういや document.forms とか document.images とか document.links とかあるけど、 DOM推奨になった昨今でも、これらは使っても全然構わないものなのかね?
4大ブラウザ(IE、FireFox(Gecko)、Opera、Safari)で動けばなんでもいいや
>>240 気付いた時におまえがやれ。
日本人なら少なくとも3年間で数百時間の英語授業を受けてるよな。
それにも関わらず技術系の文章(単語さえ知っていれば構文自体は分かり易い)を
訳せないならその時点で未知の言語を習得する能力が無いと見なしてよい。
また、仮にガキの頃サボっていたとしても、自力で解釈(翻訳)すれば、
例えばECMA262を訳し終わった時には高校卒業くらいの量を読んだことになり、
かなりの英語力が身に付くわけだ。
技術系の英語が読めないのは怠慢でしかないから、配慮する必要は全く無い。
>>245 お気に入りの追加ならできるでしょ。セキュリティの問題ないから。
過去スレ検索すればあるよ。しかしポップアップブロックやプライバシーは
全然別物だろ。
これだから
>>246 は困るよな。 ひとりよがりというか。
英語が読めない人は声が大きいねぇ
画像を自動更新表示させる際に、.jpg?のあとにnow.getTime()をつけてキャッシュ表示を回避してる この方法だとIEのキャッシュフォルダに.jpg[17]とかたくさんファイルが残ってしまうのだが うまいこといく方法ありませんか
251 :
240 :2005/06/22(水) 23:35:22 ID:???
>>246 すいませんでした。今度からそうします。よくわからない所は教えてください。
英語どうこうの話じゃなくて、
前スレでちょっとそれで言い合いになって、
(厨房や初心者が英語のページわざわざ好んで読むか?とか)
かつ、和訳のページも近くにあったのに、
わざわざそっちは無視してることに、
>>246 の傲慢さとか何とかがうかがえる、という話なんじゃね。
>>212 > for(var i = 0; i < s.options.length; ++i)
length がそのループでアップデイトされる可能性が無いとか、
最初にループに入った時の length で固定に決まってるじゃんとか、
殆どの場合はそういう状況で考えているだろう。
そういう場合は常に var s_options_length = s.options.length
のように前もってスナップショットを保持するようにしたい。
DOMの仕様書を読めば、ある操作後にアップデイトされるかされないかは
必ず分かるようになっているわけで、つまり、それほど大切なことだ。
因みに、length 保持によるループ速度向上は微々たるものだから、
length 保持はループ速度向上の理由になることは無い。あくまで length が
アップデイトされるかどうかが判断基準になる。
盛り上がっているところ申し訳ないが、さっき英文のを貼った237は俺で246ではない。 それも前スレから持ってきたのではなくて、単純にgoogleでjava coding standardで検索して貼った。 日本語云々の話は知っていたけれど、確か前スレの終わりでは「和訳を読みたい奴は自分で探せ」だったよね。 資料を貼る方としては、わざわざ日本語訳まで探すのはあほらしいから、 どんなに英語が読めない奴が騒ぎ立てようともやらない。 自分で探せ。 この当たり前のことが出来ない奴が質問スレで大声で叫んだところで馬鹿にされるのは当たり前だと思った
exactly!!
おっと誰も書いてないと思ったら
正確には
>>252 exactlyだ。変な奴に同意しちまった。
257 :
220 :2005/06/23(木) 00:05:13 ID:???
おめーら、本当に不器用だなぁ。 英訳は手間でなければ張ってもらえばよいに一票。 コードと同じで、回答者の裁量なのでは? 後で、多数決でも取ればよし。 でよ、手元の「HTML&XHTML&CSS辞典」先生 P210によると strictだとbodyの直下にselectは置けない様になってるのですが、 これは本の方が間違っているのかな? あーちなみに、英語得意でないから、 「HTML&XHTML&CSS辞典」先生に頼っている。
>>255 せっかく英語使ったのに、本当に空気読めない奴だな(笑)
>>255 ,256
exactlyって、なんでそんなに正確さを求めなきゃならぬわけ?
いーじゃん、主観的だって。。
エクスタシ〜♂ゞ
>>253 いや、漏れはそうやって変数増やすのは必ずしも読みやすく
ないと思ったから直接s.options.lengthと書いただけだよ。
ま、速度が問題ないのだから趣味の問題でいいんじゃないの?
>>257 もちろんP要素なりに入れるだろ。
>>212 だってそうしてる。
>>261 あのねえ、そのexactlyは日本語に訳すと「まさに!」
なんだよ。まあカッコつけて英語にするヤシもはずいと思うがね。
しかも英語を書いた奴は英語が読めないときている。笑えるからいいけど
英語で仕様は読めても、日常会話が出来なそうだな。ただの相槌だ。 訳せば「そういうことだ」
>>263 そこであれですよ。
for (var i = s.options.length; i--; )
どこかで比較してたページを見た記憶があるがそもそもJavaScriptだったかどうか。
(Cとかでの話だったかもしれない)
まあ処理する順番が重要になってくる場合は使えないけどね。
まさかこのスレで無視設定をするとは思わなかった。さらば663。 前スレで、Operaでselectstartを停止したいと言っていた人まだ見ているかな? 有名なトリックがあるので、まだ見ているようだったら言って下さい
>>267 それ、結構使いたい場面あったりするけど、0 が必要なときとか、
結局中で array[i-1] しなきゃけないから、あまり早くなさそうなんだよね。
でも length 使うときで順番に処理する必要ないなら使えるかもな、ふむ。
>>266 「そういうこと」とは、どういうことか。文中のことばを使って40字以内で日本語で書け。
663・・・ (-人-) ナムー
>>270 あー、Operaだからいいや、って思ってたけど、できることなら知りたいな。
教えてくださいプリーズ。
本人じゃないけど。
>>240 少し見たら、こんなのがあった。
中身のない while 文は,以下の形式で書くようにする.
while (条件);
訳注4:つまり,次のような書き方はよろしくない,ということ.
while (条件)
;
while (条件) {
}
while (条件) {}
空文空回しは、みんなwhile (条件);でやってるの?
昔C勉強してる時、
while(条件){
;
}
こうやって空回ししてるのを明示した方がいいようなことを
本か友人から教わったことがあるのだが。
while (条件);だと後々何やってるかわかんないと言い出す奴が出てきそうな。
(また野次が飛ぶかな。そういう低レベルは無視しろだとか・・・)
クセで while () 1; ってやってるなあ・・・。
>>273 operaだからいいや、なんて寂しいこと言わないで(笑)
こんな感じです。今適当に書いているのでsyntax errorなどは勘弁を
<div id="prevent" style="position:absolute;visibility:hidden"><form><input type="text"></form></div>
<script>
function prevent(e) {
var element=document.getElementById("prevent").children[0].children[0];
element.focus();
element.blur();
}
document.addEventListener("click",prevent,false);
document.addEventListener("dblclick",prevent,false);
document.addEventListener("mousedown",prevent,false);
document.addEventListener("mousemove",prevent,false);
document.addEventListener("mouseup",prevent,false);
</script>
>>274 訳注はあく、あで訳注であって、原文にはないからあてにならない。
原文では、本当に守って欲しいことに関しては「NOTE」の欄に
「こうしてはいけない」と書いてあるので、
whileに関しては読みやすさの点から言えば274のどれを使ってもいいと思う。
ちなみに原文に「こうしてはいけない」と書いてある内容で、
ぜひみなさんも採用することを勧めるのが7.4章。以下引用
--------------------------------------------------------------
注意: if 文には,常に {} を使う.以下のようなエラーを引き起こす書き方はしない.
if (条件) // {} は省略しない!
文;
--------------------------------------------------------------
これをやるだけで、2chにソースを貼り付けるときなど特に、格段に読みやすくなります
278 :
Name_Not_Found :2005/06/23(木) 01:27:29 ID:E/7xeN4u
ループで質問です。 for (var i = 0 ; i<10 ; i++ ) { document.write(i+'-'); } で 0-1-2-3-4-5-6-7-8-9- を 0-1-2-3-4-5-6-7-8-9 にしたいのですが、どうすれば良いですか?
>>276 な、なるほどーーー。 そりゃ確かになりそうだわー。
ってかそこまでしなきゃいけないのか Operaさんめ!
<div 〜> 〜 とかなくても、
テキトーに input 要素作ってそれに id 振って doc.get〜以下略 のが早そうね。
参考になったよありがトン!!
>>forの後で最後の文字削れば。
>>278 // 1
var arr = new Array(0,1,2,3,4,5,6,7,8,9);
document.write(arr.join('-'))
// 2
var arr = new Array();
for (var i = 0; i < 1; i++) { arr.push(i) }
document.write(arr.join('-'))
// 3
var str = '';
for (var i = 0 ; i<10 ; i++ ) { str += i + '-'; }
document.write( str.replace(/-$/, '') );
// 4
for (var i = 0 ; i<10 ; i++ ) { document.write( i + ( (i != 10) ? '-' : '' ) ); }
etc ...
げほw × (i != 10) ○ (i != 9) か (i < 10) // 5 for (var i = 0 ; i<9 ; i++ ) { document.write(i+'-'); } document.write(10);
>>282 0-1-2-3-4-5-6-7-8-10
orz
285 :
278 :2005/06/23(木) 01:40:54 ID:EC36O3xr
>>281 さん
わお。ありがとうございます。タルムードみたいだ!
(push以外は環境OKです。中就//4が気に入りました)
TABLEにTRを規定分作って、その中にTABLEを子ノードに 登録したTDを埋めこんでいくコードを組んでいます。 TDを埋めこむ前に TRlist = 〜.getElementsByTagName('tr'); としてノードリストを確保している(つもり)にもかかわらず、 埋めこむごとにTRlist.lengthが増えていきます。 つまり、TDの子ノードのTABLEがくっつくとその分のTRも 〜.getElementsByTagName('tr')に含まれてくるわけで ここまでは想定できたのですが、 事前に変数を与えておいてもダメでした。 TDの子ノードにTABLE階層をもってくるのは仕様だと思ってください。 何かいい解決策はありますか?
>>276 ウーン、それだけだと、
ページが縦に長いとき、勝手にスクロールされちゃってダメぽ・・・ orz
>>286 ウソーン。 じゃあ、
・ var tr_leng = TRlist.length; と長さを変数に保管。
・ var arr = new Array(); for (var i = 0; i < tr_leng; i++) { arr[ arr.length ] = TRlist[i] } とかやって別の配列にノードを保管。
・ ループ中 TD に埋め込まないで、終わったあとに入れる。
・ DocumentFragment にいれていく。
とかな。
>>260 サンクス!
後、誰かが鬼役になるのも嫌いだ。
>>前スレ663 ガンガレ!
Pタグ見落としてた。。
>var tr_leng = TRlist.length; と長さを変数に保管。 実はTD入れるとき色々処理してランダムっぽく特殊な入れ方してるんで TRlist.lengthの値だけを保持してもダメなんです。 今の状況は、例えばTRlist[300]が処理の中で登録したTABLEのTRに変わってたりするんで、 そのTRの中に新たにその処理で登録するTABLE階層付きTDが入ったりしている状況なんです。 > ループ中 TD に埋め込まないで、終わったあとに入れる。 くらいしかないのかなぁと思っていました。埋めこまなければTRlist変わらないですもんね。 ただ埋めこむときに必要な、どのTDが親かという参照の保持を考えないといけませんね。 >別の配列にノードを保管。 これ興味深いですね。色々試してみます。 >DocumentFragment にいれていく DocumentFragment噛ませると追加TABLEのTRは、TRlist,つまり〜.getElementsByTagName('tr');に 登録されないのですか?
292 :
291 :2005/06/23(木) 03:02:21 ID:???
>>DocumentFragment にいれていく >DocumentFragment噛ませると追加TABLEのTRは、TRlist,つまり〜.getElementsByTagName('tr');に >登録されないのですか 何も変わりませんでした。
>>291 どうもよくわからん。
やりたいこととしてはあるtableの直下のtrのみからなるコレクションがほしいでOK?
で、今はTRListってのは
var TRList = table.getElementsByTagName("tr");
って感じで取得してるの?
もしそうなら
var TRList = table.rows;
で取得するのは駄目なのか?
294 :
291 :2005/06/23(木) 07:06:59 ID:???
それだー!! いやはや肝心のことを忘れていました。 table.rows;は試してないけど、「tableの直下のtrのみからなるコレクション」 でピンと来ました。 もともとこの表(ソースの方じゃなくて組み直してる方)は、自分で作っているので 処理してる関数には、枠組みのTableもTbodyも変数で取ってこれました。 しかもTbodyには処理されるTRしか入れていませんので、tb(TBODYの変数).childNodes で取れました。当然lengthも変わりません。293の見事なアシストでした。 それにしてもgetElementsByTagNameは便利だけど、 先に変数に入れておいたものまで勝手に更新してくれるのはいかがなものかと。 getElementsByTagNameは、走らせた時に対象ノードの参照を持ってくるわけじゃないのだね? 実際に値を渡す時にメソッドを実行してるのかなと妄想してみる。 そういえば ’pre’order traversalを見つけてくるとか書いてあったけど、あくまで「仮だよ」ってこと?
>>287 わざわざinputタグではなくてdivタグにIDを振っているのはそのためで、
面倒だから書かなかったけれど、クリックされたらdivタグの場所を
マウスポインタの場所まで動かせばいいのですよ。
>>294 ごちゃごちゃぬかす前に仕様書を読めビチクソ。
javascript で指定した class 全体にスタイルを適用させるにはどうしたらいいですか?
298 :
Name_Not_Found :2005/06/23(木) 10:14:50 ID:pkyqBadf
再度登場していまいました。 やっぱりどうやってもうまくいきません。 JAVASCRIPTの部分をFORM NAME="0"を実行するとFORM NAME="A0"の中の パラメータが出てきます・・・どなたか解決策をご教授下さい!! <HTML> <HEAD> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> <SCRIPT language="JavaScript"> function JumpURL(url) { if (url != '') { window.location = url; } } </SCRIPT><center></HEAD>
299 :
Name_Not_Found :2005/06/23(木) 10:15:18 ID:pkyqBadf
<TABLE width="768" border="2"> <TBODY> <TR> <TH align="middle" bgcolor="#ffff84" width="20"><FONT size=2>月</FONT></TH> <TH align="middle" bgcolor="#ffff84" width="17"><FONT size=2>日</FONT></TH> <TH align="middle" bgcolor="#ffff84" width="16"><FONT size=2>曜日</FONT></TH> <TH align="middle" bgcolor="#ffff84" width="16"><FONT size=2>属性</FONT></TH> <TH align="middle" bgcolor="#ffff84" width="45"><FONT size=2>始業</FONT></TH> <TH align="middle" bgcolor="#ffff84" width="47"><FONT size=-1>終業</FONT></TH> <TH align="middle" bgcolor="#ffff84" width="46"><FONT size=-1>出社</FONT></TH> <TH align="middle" bgcolor="#ffff84" width="46"><FONT size=-1>退社</FONT></TH> <TH bgcolor="#ffff84" width="166"><FONT size=2>特 記 事 項</FONT></TH> <TH bgcolor="#ffff84" width="39"><FONT size="-1">更新</FONT></TH> <TH bgcolor="#ffff84" width="24"><FONT size=-1>承認</FONT></TH> <TH bgcolor="#ffff84" width="58"><FONT size=-1>勤怠</FONT></TH> <TH bgcolor="#ffff84" width="40"><FONT size=-1>入力<BR>有無</FONT></TH> <TH bgcolor="#ffff84" width="52"><FONT size=-1>時間外</FONT></TH> <TH bgcolor="#ffff84" width="40"><FONT size=-1>入力<BR>有無</FONT></TH> </TR>
300 :
Name_Not_Found :2005/06/23(木) 10:15:48 ID:pkyqBadf
<TR> <TH colspan="11" align="left"> <TABLE border="1"> <TBODY> <FORM NAME="A0"action="data_update" method="post"><TR> <TD><bgcolor=#FFFFFF><fgcolor="black" align="center">06</TD> <TD bgcolor=#FFFFFF fgcolor="black" align="center">01</TD> <TD bgcolor=#FFFFFF fgcolor="black" align="center">水</TD> <TD bgcolor=#FFFFFF fgcolor="black" align="center">時</TD> <TD bgcolor=#FFFFFF align="center"><INPUT type="text" name="ys" size="6" maxlength="4" value="0900"></TD> <TD bgcolor=#FFFFFF align="center"><INPUT type="text" name="ye" size="6" maxlength="4" value="1700" ></TD> <TD bgcolor=#FFFFFF align="center"><INPUT type="text" name="js" size="6" maxlength="4" value="0830" ></TD> <TD bgcolor=#FFFFFF align="center"><INPUT type="text" name="je" size="6" maxlength="4" value="1759" ></td> <TD bgcolor=#FFFFFF fgcolor="black"><input type="text" name="ri" size="30" maxlength="30" value="" readonly="readonly"></TD> <td bgcolor=#FFFFFF><input type="submit" value="更新"></TD> <td bgcolor=#FFFFFF align="center">済</td></FORM> </TR> </TBODY> </TABLE> </TH>
301 :
Name_Not_Found :2005/06/23(木) 10:17:17 ID:pkyqBadf
<TH colspan="4" align="left">
<TABLE border="1">
<TBODY>
<TR>
<TD><script type="text/javascript">
<!--
function FC0(WO) {
var df = document.forms[0];
switch (WO.FSGo.selectedIndex) {
case 0: df.action="192.168.0.90"; break;
case 1: df.action="
http://192.168.0.50/pls/kintai/KN_YUU "; break;
}
df.submit();
}
// -->
302 :
Name_Not_Found :2005/06/23(木) 10:17:27 ID:pkyqBadf
</script> <FORM NAME="0"method="get" action=""> <select name="FSGo" onChange="FC0(this.form)" > <option>振休 <option>代休 </select> </TD></FORM> <td bgcolor=#FFFFFF><FORM method="get" action="●●●"><input type="submit" value="確認"></FORM></TD> </TR> </TBODY> </TABLE> </TH> </tbody> </table> </CENTER> </b> </TR> </TBODY></TABLE> </HTML>
無駄な情報は削れ。正直ウザイ formのnameを"0"以外で試したか?
>>298-302 あきれた。
>>2 を読んでないんだ。
: 3)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
: そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
: 長い(1レスに入らない)場合はアップロードしてURIを貼る。
そしてnameに数字のみは不可。これはHTMLの規格。テンプレが読めなくて
HTMLが書けない奴は2度と来て欲しくない。
>>297 ホレ。
<!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('.a', 'background-color: yellow', 0);
} else { // Gecko
document.documentElement.appendChild(document.createElement('style'));
var a = document.styleSheets;
a[a.length-1].insertRule('.a { background-color: yellow }', 0);
}
}
</script>
</head><body>
<p class="a"><button onclick="test()">Test</button></p>
<div class="b">test</div><div class="a">test</div></body></html>
>>298-299 -300-301-302
NAMEの書き方も知らずにこんなに長大なゴミを書くまでになってしまったんだなあ。
他にもいい加減なとこが山ほどあるんだろうな。報いが来る前にイチから出直せ。
308 :
Name_Not_Found :2005/06/23(木) 14:45:25 ID:pkyqBadf
すみません。NAMEきちんと書き換えました。 それでもエラーです。 ちなみにループをかけてA1〜A31までFORMの名前は変わります・・・ そうしてA2を実行してもA1のパラメータが・・・ 無視しないで下さい・・・ お願いします。
>>308 エラーだって!!! エラーの個所と内容を書かずによく言えるな。
だからさー、ちゃんと
>>2 の通りにすれば助言してもいいよ。
何と言われようが超迷惑な質問者に同情するヤシなどいないぞ。
>>308 いいアドバイスをあげようか。まずhtmllintみたいなサイト使って
自分のHTMLをチェックしてエラーをなくす。それが終わらない状態で
JavaScriptこねくり回しても大変なだけだよ。エラーが取れないなら
そいつはそこまでが限界っていうことさ。洩れ達はHTMLエラーチェック
屋じゃないんだ。
早めにテンプレの
>>4 の改訂版を検討しようと思って。次のどお?
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】
・仕様を読む:回答者であれば仕様は読んでいるべき。質問者でも仕様を
読まずにうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。
・英文文書:ドキュメントの英文が読めないのは努力不足。和訳の場所
を教える等の親切は歓迎だが英文を非難するのは筋違い。
・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと
は無視」は不毛。質問者が分かって選択していれば尊重する。無知か
らIE専なのは指摘してあげると親切。
・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される
可能性大。非標準機能も損得を分かった上で使うならよい。
・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、
そこだけ見ているとIE専になる。あとは上2件と同様。
・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当
な理由があることも。尋ねて分かってないようなら煽っても可(w
・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選
択するべき。一概にどちらは駄目、とは言えない。
・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性
で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
312 :
Name_Not_Found :2005/06/23(木) 15:08:03 ID:pkyqBadf
自分なりに考えて書きます。2つ目のセレクトを実行しても1番目の
FORMの内容がリンク先にいくのです。paraの値が必ず1になります。
<HEAD><META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<SCRIPT language="JavaScript">
<!--
function FC0(WO) {
var df = document.forms[1];
switch (WO.FSGo.selectedIndex) {
case 0: df.action="192.168.0.90"; break;
case 1: df.action="
http://192.168.0.50/pls/kintai/KN_YUU "; break;
case 2: df.action="
http://192.168.0.50/pls/kintai/KN_FURI "; break;
}
df.submit();
}
// -->
</script></HEAD>
<FORM NAME=g0 method="get" action="">
<select name="FSGo" onChange="FC0(this.form)" >
<option> <option>有給 <option>振休
</select>
<input type="hidden" name="para" value="1"></FORM>
<FORM NAME=g1 method="get" action="">
<select name="FSGo" onChange="FC1(this.form)" >
<option> <option>有給 <option>振休
</select>
<input type="hidden" name="para" value="2"></FORM></HTML>
問1:「あたかも」を使って短文を作りなさい。 答え:「冷蔵庫に牛乳があたかもしれない。」 問2:「どんより」を使って短文を作りなさい。 答え:「僕はうどんよりそばが好きだ」 問3:「もし〜なら」を使って短文を作りなさい。 答え:「もしもし、奈良県の人ですか?」 問4:「まさか〜ろう」を使って短文を作りなさい。 答え:「まさかりかついだ金たろう」 問5:「うってかわって」を使って短文を作りなさい。 答え:「彼は麻薬をうってかわってしまった」 問6:「おおむね」を使って短文をつくりなさい。 答え:「彼女はDカップのおおむねだ」 問7:「もはや」を使って短文をつくりなさい。 答え:「君もはやく大人になりなさい」
(notレスbut独りごと) NAMEは女で、他の女が囲われてるのに自分がいい加減に扱われているのを 氏って嫉妬を起こすらしいな。人間といっしょだ。 ビルダーかなんかのジェネ出力っぽいが、HTML(とくにselect部)が汚く て読む気がしない。
答案を返しまーす。 313くん、あれほど言ったのにひとつもできてません。 どうしたの?気分でも悪いの? はい、これ補習。明日までですよ。こんどはがんばって! 問1:「すこしも〜ない」を使って短文を作りなさい。 問2:「もっこり」を使って短文を作りなさい。
次のエサマダー?
>>315 問1
氏ねよこのカスこしも歯ごたえもないうどん作りやがって!
318 :
sage :2005/06/23(木) 17:20:21 ID:pkyqBadf
var df = WO; これで解決しました。ありがとう!!
三木瓜リッチな味わい。
>>318 よかったね。もう二度と来ないでね
と言うわけでここは日本語スレになりまつた
次の質問どぞ
たいてい顔澄ましマスをかいていた
>>311 書き方が、直接的すぎる希ガス。
本質的には同意に、一票。
・英文文書:ドキュメントの英文が読めないのは努力不足。
和訳を探すなり、翻訳なりの努力を惜しむべからず。
・英文文書:ドキュメントはなるべく原文で。翻訳の努力を惜しむべからず。 読めないなら和訳を探し、なければあきらめよう。 くらいでいいんじゃないかな?
>>311 あのさ、またぶり返すんだ。
「回答者」って誰だよ。きちっと線引きできんのかよ。前スレでも言ったが
群れてるイタイ常連数名しか答えられないなら、そういうスレ作って移れやボケ。
英文を許容するなら出す理由を明示しろっていってるだろ。
他いいソースないとか、日本訳危ういとか、英語サイトしか思い浮かばんとか
自分が英語ソースしか見ないことを他人に押し付けるな。
仕様・英文は、一見さんを威圧するだけ。また閑散とさせたいわけだ。
そうすりゃ昔みたいに管理しやすいとか?アホらしい・・・
325 :
220 :2005/06/23(木) 19:36:16 ID:???
>>324 の言いたい事は、伝わっていると思う。
その上での結果なので冷静に考えてみるとよいと思う。
>書き方が、直接的すぎる希ガス。
↑ちゃんと気づかっているだろ?
おせっかいスマソ。
>663 暇だし相手になってやるか。 > 英文を許容するなら出す理由を明示しろっていってるだろ。 1:英文が原文であることが多く、情報が正確でかつ最新であること可能性が高い 2:技術資料は最初に見つかる資料が英文である可能性が高い 3:情報を提供「してくださる」人に対して、何を選べと強制するのはおかしい > 仕様・英文は、一見さんを威圧するだけ。 これに対しても、客観的かつ明確な論拠を提示してくれ。
・663が質問する ・親切な人が調べて情報を提示する。ただし英語 ・663は「俺は英語が読めないし威圧される」とスレでわめき叫ぶ ←いまここ ・みんな無視 みんなで663を無視ワードに設定すれば平和になる
>>324 英語が押しつけがましいとか、一見さんを威圧するとか、
たぶん君がそう感じているのは確かだろうけど、みんながみんなそうじゃないし。
そもそも質問者の多くがスクリプティングの本質的なことより、検索力不足による
ものが多い、と思うのはオレだけじゃない、よね?
さすれば、提示されたポインタから、もし英語が小学生レベルで苦手なら、日本語
リソースを探したりとか、そういった「検索する能力」を導くのも大切なことなんじゃ
ないかな、と思うデスヨ。
で、そうじゃなくて、楽して回答を得たいんだ!っていうヒト向けには
手とり足とり教えるJavaScriptスレ
http://pc8.2ch.net/test/read.cgi/hp/1099993040/ があるので(ちなみにその
>>1 はオレなんだけど)そっちに行ってもらえばいいし。
どう?
前スレ
>>927 >>931 >>934 >>938-940 >>942-962 >>966 >>326 オマイも
>>270 のように無視設定でもしとけば
「英文を許容するなら出す理由を明示しろ」とは、その時々ということ
一般論は分かるが、その時なぜその質問者にそのソースをふるかなということ。
分かってそうな香具師に対しての英文ソースはそうでもないが、
ちんぷんかんぷんな香具師に対して英文ソースを出せば
消えてくれといっているようにしか写らない。
3.はまったく賛同できない。あくまでここは名無し主体の2ch掲示板。
情報を提供「してくださる」人に対してそこまでの礼を求めるなら
そういうところに移れという事。
>仕様・英文は、一見さんを威圧するだけ。
そもそも英文や仕様をしっかり読んだ香具師は、
こんなところで質問などしなし、来ないんだとと思うが・・・
手とり足とり教えるJavaScriptスレは、 まともな回答を得られそうにないという話が前に出たが、 見た感じそうだろう。
>>8 みたいなサイトをソースに挙げることがまったく無くなったようだが
決してスレのレベルが上がったからだとは思わんが
>>330 > > > 仕様・英文は、一見さんを威圧するだけ。
> > これに対しても、客観的かつ明確な論拠を提示してくれ。
> そもそも英文や仕様をしっかり読んだ香具師は、
> こんなところで質問などしなし、来ないんだとと思うが・・・
なぜ、「仕様・英文」が「一見さんを威圧する」のかを、
客観的な情報に基づいた論拠を提示してくれ、と聞いていたのだよ
> 3.はまったく賛同できない。あくまでここは名無し主体の2ch掲示板。 そのとおり。お前がむかついたので、今後俺は初心者相手に英文をばら撒くことにするよ
663=残飯が不味いとぶち切れてる乞食
正確じゃないな。 ・663が質問する ・性悪が手持ちから情報を提示する。ただしワザと英語 ・663は俺は英語が読めるけど、初心者は威圧されるだろうとなとスレで助言 ・220を筆頭にイタイ常連共があることないことわめき散らす。 ←いまここ ・常連の放置プレー。みんなも引き気味。
663を荒らし認定してもらってアク禁もありだと思う。
ガンカレ。その前に君にも無視設定をお奨めするよ。
663は自分で新しいスレを立てたらいいんじゃない?
まぁテンプレは>322か>323にしておけばいいんじゃない? 初心者に自分で努力させるのも必要だしね。
・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 この位なら許容できる。
質問です。 DOMでcloneNodeメソッドがあるのですが、その挙動について 疑問に思うことがあったので聞かせてください。 cloneNode(true)だと、子要素をすべてそのまま引き継ぎますよね。 その状態でappendChildをすると、ID要素がユニークでなくなる可能性があります。 例えば、 <html><head><title>x</title></head><body> <div id="test"><div id="uniqueID">element</div></div> <script> var clone = document.getElementById("test").cloneNode(true); document.body.appendChild(clone); </script></body></html> これは私の持っているすべてのブラウザで実行可能でしたが、 内部的には同じ"uniqueID"というIDを持つdivタグが2つ出来ることになり、 DOMの仕様としては正しくないDOMということになると思います。 これを防ぐためには、ちょっと冗長のような気がするのですが、 DOMに追加する前にID要素を手動で削る必要があるのでしょうか。
>341 それでいいじゃん
ま、昔から何十スレもECMAやW3Cのreferenceは英文を掲げて来た という実績があるから今更何をということだな。じゃそゆことで。 そもそも旧663一人ではスレはできない。他の回答者を説得する なら過去スレの実績からいって煽っても無駄なのはよく分かって いるはず。冷静な説得なら聴いてもいいんだがその能力はなさそうだな。
>>342 確かにそうだね! IDを全部統一的に変更するとかならすぐできる
と思うけど。
>>341 すばらしい。藻前を見直したよ、それでいこうか。
>>344 の
後半は取り消させてくれスマソ。
>>342 その状況でgetElementByID使うとどう返ってくるの?
>>347 試してないのでわかりませんが、使わないほうがよさそうです。
663は初心者臭漂うけど
>>341 でいい事言ったな。
「嫁ねー 和訳ねー 結局わかんねー それなら諦めろボケ」
ってあたりが最高だ。
それで行こうか
最近流れが速いなぁ・・・。 まあなんだな、どっちも頑固で偏屈でイタイタしいのは確かだが、 歩み寄ろうとしただけ 旧663 のがまだ話がわかる人な気はするな。 多勢に無勢な構図だったけどサ。 まあ同じ穴の狢同士仲良くやろうや
>>347 function test(){
alert(document.getElementById('piyo').innerHTML);
var clone = document.getElementById('hoge').cloneNode(true);
clone.firstChild.firstChild.nodeValue = 'pooh';
document.body.appendChild(clone);
alert(document.body.outerHTML);
alert(document.getElementById('piyo').innerHTML);
var piyo = document.getElementById('piyo');
var removed = document.body.firstChild.removeChild(piyo);
alert('piyo=' + piyo.innerHTML);
alert('removed=' + removed.innerHTML);
alert('getElementById=' + document.getElementById('piyo').innerHTML);
}//-->
</script>
</head>
<body onload = "test()">
<div id="hoge"><div id="piyo">foo</div></div>
・・・
う〜ん。こちらはgetElementsByTagNameのように(
>>294 )自動更新されないのね。
>>352 opera7でremoveChildでブラウザがクラッシュした・・・
IE6は正常でした。 ちなみにpiyo=foo removed=foo getElementById=poohです。
355 :
353 :2005/06/23(木) 21:55:33 ID:???
>>354 明らかにoperaが悪いので・・・
opera7の様々なバグに完全対応は不可能だと最近悟ってきた
Opera は 8 でようやく使えるツールになったと思う Opera 使いです
Opera、特に7の対応に関してテクニックなどありましたら ものすごい勢いで希望いたします。特にoverflow:auto関連で
>>349 臭せー結論だ。日本人だよな、良くも悪くも。シャンシャン音が聞こえるぜ。
ま、仲良く行けや。
>>359 スレの流れがアンタの気に入るとか入らないとかはどうでもいいの。
このスレとしての合意が多くの人にとって有益かどうかが大事なの。
たとえば
>>298-318 を見なよ、あんなに厨ぽかったのに自力でエラー
取れるようになったじゃん。すばらしい成果だよ。
www.monazilla.orz ここはこういう感じかなwww
/⌒ヽ / ´_ゝ`) すいません・・・・・ちょっとズレますよ・・・・・ | / | / | | // | | U .U
テキストを検索して、ヒットした文字を直下で保持している Element(の参照)を求めたいのだが、既存のメソッドでないよね? 自作するなら、一番上でnormalizeしてそれに文字列検索かけて 対象の位置を確認してから、textNodeの長さを加算して対象位置を追う感じ?
>>365 「ヒット」というのは文字列としてマッチするという意味?
それならnormalizeした後単に再帰的に探索するだけのような。
function search(node, str) {
var r, a = node.childNodes;
for(var i = 0; i < a.length; ++i) {
if(a[i].nodeType == 3 && String(a[i].nodeValue).indexOf(str) >= 0) return a[i];
else if(a[i].nodeType == 1 && (r = search(a[i])) != null) return r;
}
return null;
}
親が欲しいのならこれが返した値のparentNodeを取ればよい。
367 :
Name_Not_Found :2005/06/24(金) 09:26:24 ID:z49fY5sW
質問です。 <img src="images/pic441.jpg" onload="document.formPic.picdata.value='Amsterdam-4586779'"> <form name="formPic"> <p> <input type="text" name="picdata" value="" size="30"> </p> </form> で、画像情報がテキストフィールドに入りません。 何かまちがっているのでしょうか。
>>346 >HTMLの仕様としては間違っているが、DOMの仕様としては正しくないわけではない。
要するに、HTMLの仕様としても、DOMの仕様としても、「まちがい」だということ?
持ってまわった言いかたするな。斉藤敬之「技術者の論理と文章技法」を読め。
>>368 ココはそういうスレじゃないと思うぞ
つか斉藤敬之って誰?
>>367 onloadではなくonclickだと恐らく意図したように動くみたいだよ。
イメージのURL間違ってて表示されてないとかいうオチじゃないよな?
>>369 >ココはそういうスレじゃないと思うぞ
回答者の真意を質しているんだぜ。百歩ゆずってあんたの言うとおりなら、
ECMAやDOMの英文仕様書の解釈は他のサイトでということか?タテ割りも
いいとこだな。
つか、はこうへいだろ。
>>367 もまずhtmllintとかでHTMLの正しさをチェックする
ことを強く勧めるね。チェックすれば質問するまでもなく
間違いは分かっちゃうじゃん。
>>369-370 仕様の解釈はここでやるのがいいと思うが、斎藤敬之についての
説明は洩れも聞きたい。「正しくないわけではない」「正しくない
とは言えない」と書くより「正しい」と書けということ?「正しい」
だとニュアンスとして違うような。「DOMの仕様としてはその当否に
は言及していない」とかかな。しかしそこまで吟味して書けという
のは厳しすぎないか。2重否定が一般にはよくないとしても今回の
場合は代替表現がすぐには思い付かない感じがする。
日本語のよしあしの議論はスレ違いでは…ないよね、
>>1 にもあるし。
ただ噛み付きたいだけじゃない。
374 :
370 :2005/06/24(金) 14:15:10 ID:???
よー伊藤君。ガンガン食うといーよ!
JavaでMP3を鳴らしたいとき、こんな感じのものがあったのですが
ttp://www.umineko.com/writeMusicPlug.html xpをsp2にしてから、MP3を利用したページに行くと
MP3のダウンロードが始まるようになってしまい
BGMとして鳴らせない状態になってしまいました。
(他のパソコンでは平気)
こうした場合の環境依存に対処するには
どんな感じの分岐処理や対策をとるのがいいでしょうか。
…やっぱりフラッシュを使うしかないのかなぁ
377 :
297 :2005/06/24(金) 19:24:56 ID:???
>>305 こんな方法があったんですね。すばらしい!
ありがとうございました!
378 :
Name_Not_Found :2005/06/24(金) 19:34:29 ID:yaMDX0/E
IEでActiveXが有効になっているか、 無効になっているかを判定する JavaScriptのコードがありましたら お教えください。
オマイラFlashじゃアカンの?
>>378 seach(google?ActiveX+MSIE)?'HAPPY':return 2ch;
>>379 DOMいじれないからねぇ…FLASHはバージョンによって差異も大きいし
質問です。 Opera8.0で、右クリックに対応してメニューを出すスクリプトを出したいのですが、 右クリックイベントを取得することは出来ますか? とりあえず調べて見たところでは、onmousedown、onmouseup、onclickのいずれも fireされていないみたいですが、何かトリックなどないのでしょうか… よろしくお願いします
Opera に対応させるなんて時間の無駄って結論。
より多くの人に見てもらいたいジャマイカ
でも、javaも見れないというか有効にしてない人もいるんだよなぁ 雑誌でjavaは危険という記事を見たりして
>>386 なんでJavaScriptスレで偉そうにjavaの話してるんだ。爆笑だぜ。
ま、自分が使いもしないものに蘊蓄垂れに来る奴なんてそんなもんか。
>>385 言い直すよ、
Opera に他のブラウザと同じように完全対応させよう、なんて時間の無駄って話。
IEとFFに、ってくらいなら割といける気がする。
>>389 もはや趣味です<完全対応
でも右クリックだけは無理っぽいね。海外サイト含めて情報が皆無だ…
晒しage
>>381 SWFでなくてよいので無料のMSXMLでDOMを体験してみましょう。
ブラウザが表示しているHTMLをDOMにするというのが特殊な使い方だと知りましょう。
>>366 それじゃあ
<p>あい<span>うえお</span></p>
から「あいうえお」は探せない。
>>393 ふーん、そういうものを求めているのか。それが分からなかったんで。
そうなるとなかなか、面倒くさいね。
395 :
365 :2005/06/25(土) 07:49:35 ID:???
いや質問者は、十分それで解決しマスタ。
再起コードの組み方になれてないんで、あれは目から鱗。脱帽です。
対象がテーブル内の単純なテキストだと思うんで、
(弄くる方のtableソースをじっくり見てないんではっきり言えませんが)
今回はあれでOKです。
ただ、
>>393 がいってるようなの場合の対処には、興味があるので
時間があれば、対処法の考え方でもいいので返してくれるとうれしいです。
396 :
365 :2005/06/25(土) 07:50:56 ID:???
再起→再帰 誤爆。
×(r = search(a[i])) != null ○(r = search(a[i],str)) != null
398 :
Name_Not_Found :2005/06/25(土) 09:30:26 ID:s9Ocuqkq
正規表現とマッチを自習したいのですが、どういう風に勉強するのがいいですか? とっつきにくくてよく分かりません。または、好適サイトのURLお願いします。
>>398 JavaScriptでもできるけど、
正規表現が主目的なら実用を兼ねた方がとっつきやすい気がする。
「見知らぬ国のトリッパー」で入門とかお勧め。
401 :
398 :2005/06/25(土) 10:58:44 ID:LwMUoYnn
>>400 さん
ありがとうございます。正規表現道場@2ch 訪ねてみました。
みなさん日々相当に鍛えられていましたが、イチから相談に乗ってくれる所ではな
いと判断。それに、JavaScriptだと、ここへ誘導される脅迫観念をおぼえました。
どっかで入門してそれからまた行ってみます。
>>394-395 ちょっと出かけてたもんで。作ってみたが。とりあえず最初の位置のテキスト
ノードを返すんで、全体を包含するとかだとちょっと改良が必要だが一応。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function Scanner(str) { this.str = str; this.arr = new Array(str.length); }
Scanner.prototype.putc = function(ch, obj) {
for(var i = this.str.length-1; i > 0; --i)
this.arr[i] = (ch == this.str.charAt(i)) ? this.arr[i-1] : null;
this.arr[0] = (ch == this.str.charAt(0)) ? obj : null;
return this.arr[this.str.length-1];
};
function search1(node, sc) {
var r, a = node.childNodes;
for(var i = 0; i < a.length; ++i) {
if(a[i].nodeType == 1 && (r = search1(a[i], sc)) != null) return r;
if(a[i].nodeType != 3) continue;
var t, s = a[i].nodeValue;
for(var j = 0; j < s.length; ++j)
if((t = sc.putc(s.charAt(j), a[i])) != null) return t;
}
return null;
}
function search0(node, str) { return search1(node, new Scanner(str)); }
function test() {alert(search0(document.body, 'かきくけこ').parentNode.innerHTML);}
</script>
</head><body>
<p><button onclick="test()">Test</button></p>
<p>あいうえおか<span>きく</span>けこさし</p></body></html>
あなたと身体の関係をと興味をもち、メールしています。費用は私がもちます。お 恥ずかしい話ですが、私は31歳ですので、お会いするたびに、気持ち程度ですが謝礼をさ しあげることも考えております。実生活では、女である私からこのようなお恥ずかしい願 いを叶えてくださる方を見つけるのは困難で、もしよろしければ、と思いました次第で す。突然のメールになりましたこと、どうかお許し下さい。
--></script>
>>402 if (A && X) return R; if (B) ...; で二重チェックが多く発生する。
if (A) { if (X) return R; } else if (B) ...; にするとか、
if (B) ...; else if (A && X) return R; にするとかすれば少し速くなるかも。
>>405 速度より分かりやすく書いたつもりだが、それが気に入らないなら
好きなように書き直せば。そもそも実行時間の差は十分に
小さいと予想しているけど、測ってくれる人いたら嬉しいな。
すまそ、分かりやすくというのはちょっと違うな。レスに貼るとき は行数を少なくしようとしてるかも。
// ("Range", "2.0"), ("Traversal", "2.0") // javascript:var c=containerElementOf('3 :Name_Not_Found:2005/06/25(土) 17:06',document.body);if (c) alert(c.textContent);else alert(null); function containerElementOf (substring, root) { var src = new RegExp( substring.replace( /[\t\u0020]+/g, '[\\t\\n\\f\\r\\u0020]+'), 'g'); var result; var startAndEnd; var range = document.createRange(); range.selectNode( root); result = src.exec( range.toString()); if ( ! result) return null; startAndEnd = getStartAndEnd( result.index, src.lastIndex, root); range.setStartBefore( startAndEnd.start); range.setEndAfter( startAndEnd.end); return range.commonAncestorContainer; } function getStartAndEnd (startBeforeIndex, endAfterIndex, root) { var tw = document.createTreeWalker( root, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_ENTITY_REFERENCE, null, true); var c; var i = 0; var startContainer; while (i <= startBeforeIndex) { c = tw.nextNode(); i += c.nodeValue.length; } startContainer = c; while (i < endAfterIndex) { c = tw.nextNode(); i += c.nodeValue.length; } return { 'start': startContainer, 'end': c }; }
>>406 > 速度より分かりやすく書いたつもり
分かり易いとは、定番の書き方をすることかもしれない。
function rec (someArray) {
var c;
...
for (条件など) {
c = someArrayの要素;// 普通はスナップショットを保持
if (cがArray) {
...
rec( current );
...
} else {// cはArrayじゃない
...
}
}
...
}
しかし、DOMの場合、引数をHTMLCollectionにしなくても、内部でchildNodes
ですぐに取得できるから、これは構わない。
しかし、
>>366 も
>>402 も引数または変数のいわば型というもの「だけ」で
for内の一番外側を分岐していないのですぐ引っかかる。
引っかかるから、つい読んでしまう。読んでしまうと、
二重チェックしてるじゃん、と気づく。
411 :
Name_Not_Found :2005/06/25(土) 21:10:44 ID:k1zL4/Ig
JavaScriptでcookieを使いたいんですが document.cookie=name1=値 document.cookie=name2=値 とういうやり方でクッキーに複数の値を入れるっていうのはわかったんですが それを一個一個読み出すときはどんなふうにすればいいんですか?
>>409 確かに。
for(var i = this.str.length-1; i > 0; --i)
this.arr[i] = (ch == this.str.charAt(i)) ? this.arr[i-1] : null;
this.arr[0] = (ch == this.str.charAt(0)) ? obj : null;
return this.arr[this.str.length-1];
};
どこまで続くとか思うけど、実は’{’入れてないだけなんだよね。
>>277 とか昔話題に出たね。
if(a[i].nodeType != 3) continue;
continue;さんは何者?
>>411 ググれば幾らでもサンプルがあるでしょ?
Ajaxの公式の仕様などがないためにここで質問させてください。 Ajaxでタイムアウトのセット関数がないのは、自前でsetTimeoutを使って タイムアウト処理をしろという事だと思うのですが、 逆に言うとXMLHttpRequestのsendメソッドは決してタイムアウトせずに 忍耐強くサーバからのレスポンスを待ち続けるのでしょうか。
setTimeoutに関する質問です。 function func(instance,data) { if(instance.delay>0) { setTimeout("func(instance,data)",delay); return; } instance.post(data); } この関数はエラーがあって、setTimeoutの中のスクリプト"func(instance,data)"で instanceとdataが両方未定義となってしまいます。 instanceはオブジェクトでdataも文字列ではなく、この関数は非同期に呼ばれうるので グローバル変数を使うことも出来ません。 こういう場合はどのようにfuncにデータを渡してやればよいのでしょうか。 どなたかご教授願います
>>415 setTimeoutの第一引数を文字列ではなく関数にしてみたらいいんじゃないの?
それがすべてのブラウザで使えるかどうかは知らないけれど
>>415 setTimeout(function() { func(instance,data); }, delay);
これが動かないなら言語がJavaScriptじゃない(少なくとも
1.1とかものすげー古い奴)。そんなのはまず現存しない。
なんでみんな問題満載な文字列を渡す呼び方が好きなのかね…
>>416-417 ありがとうございます。
>417
私は検索して参考にしたページに文字列渡ししか書いてなかったためです
411は馬鹿420は神
>>402 「きくけこ」を検索すると'きく'のノードが返るけど。
>ノードを返すんで、全体を包含するとかだとちょっと改良が必要だが一応。
これがそういう場合なの?
神は深くて測り知れないことも隠されていることもあらわし、暗黒にあるものを知り、ご自身に光を宿す。
>>422 その通り。いちばん分かりやすい手直し方法は再帰呼び出しするときに
再帰レベルを計算しつつ、文字の一致が起きた時再帰レベルがより小さい
ものが現れたらそれを含む要素を覚え直すというものかな。気が向いたら
直してもいいが、そもそもあのコードを(ヘンな制御構造は手直しするとして)
自分で読んで動かせるヤシならばそれくらい直せるよね。
ま、
>>402 直してみたけど。制御構造ももうちょっと普通にしてみた。でも長いぞ。
function Scanner(str) {
this.str = str;
this.arr = new Array(str.length);
this.lev = new Array(str.length);
}
Scanner.prototype.putc = function(ch, obj, lev) {
var s = "";
for(var i = this.str.length-1; i > 0; --i) {
this.arr[i] = (ch == this.str.charAt(i)) ? this.arr[i-1] : null;
this.lev[i] = this.lev[i-1];
if(this.lev[i] > lev && this.arr[i] != null) {
this.arr[i] = obj; this.lev[i] = lev;
}
}
this.arr[0] = (ch == this.str.charAt(0)) ? obj : null; this.lev[0] = lev;
return this.arr[this.str.length-1];
};
function search1(node, sc, lev) {
var r, a = node.childNodes;
for(var i = 0; i < a.length; ++i) {
if(a[i].nodeType == 3) {
var t, s = a[i].nodeValue;
for(var j = 0; j < s.length; ++j)
if((t = sc.putc(s.charAt(j), a[i], lev)) != null) return t;
} else if(a[i].nodeType == 1 && (r = search1(a[i], sc, lev+1)) != null) {
return r;
}
}
return null;
}
function search0(node, str) { return search1(node, new Scanner(str), 1); }
<style type="text/css"> script{white-space: pre;} </style>
427 :
365 :2005/06/26(日) 10:40:23 ID:???
>>425 勉強させてもらいます。複数マッチに対応してみました。
function test(){
var target ='5'; //検索文字列
var body = document.body;
var ar = strMatch_onDOMTree(body,target);
if(ar==null){
alert('マッチしませんでした');
return 1;
}
for(var str ="",j=0;j<ar.length;j++){
str += ar[j].parentNode.outerHTML + '\n';
}
alert(str);
}
function strMatch_onDOMTree(node, str){//match:return matching_nodeList unmatch:return null
var result;
var array = new Array();
while((result = match_1node(node,array,str))!= null && array.push(result))1;
//要素を取るのなら〜.push(result.parentNode)〜
if(array.length==0){return null;}
return array;
}
428 :
365 :2005/06/26(日) 10:40:50 ID:???
function match_1node(node,array,str) { //match:return matching_node unmatch:return null var r, a = node.childNodes; for(var i = 0; i < a.length; i++) { if(a[i].nodeType == 3 && String(a[i].nodeValue).indexOf(str) >= 0) { for(var cnt=0;cnt<array.length;cnt++){ if(array[cnt] == a[i]){return null;} } return a[i]; } else if(a[i].nodeType == 1 && (r = match_1node(a[i],array,str)) != null){return r;} } return null; } ・・・・・・ <body onload = "test()"> <div id="hoge"> <div id="a">123</div> <div id="b">456</div> <div id="c">789</div> <div id="d">012</div> <div id="e">345</div> <div id="f">678</div> </div> </body>
XMLHttpRequestでsetTimeoutからabortを発行すると、 FireFoxではonreadystatechangeがreadyState==4で2回発行されてしまう。 しかもその時statusにアクセスしようとすると内部エラー0x80040111。
フェル博士、僕はあなたが好きじゃない
>>429 しょうもなー。が、フラグを別に用意して1回発行されたら
あとは何もしないように逃げれば?
>431 なんと同時に発行されているみたいで、例えば var flag=true; onreadystatechange=function(){alert(flag);flag=false;} とやったら、trueというflagが2回表示されます。 まぁ回避する方法は何とでもあるのでがんばるけど、とりあえず abort()は使わないほうが良いでしょう。
<html> <body> <div class=hoge>ほえほえ<br></div> <div class=foo>ふー</div> <body> <html> な感じのHTMLが有るんですが ここから<div class=hoge>の中のタグを取得するにはどうすれば良いでしょうか document.all(3).innerHTMLで取得できますがこれだと前にタグ増えると誤作動しますし classは一意なのでここから引っ張ってこれないかと思ってるんですが。 もし、classじゃなくてidなら簡単なんですけどね・・・。
>433 function recursize(element){ while(element.getAttribute("class")=="hoge") { return element;} for(var i=0;i<element.childNodes.length;i++) { var ret= recursize(element.childNodes.item(i)); if(ret) return ret; } return null; } recursive(document.body); 動くかどうかはしらない
<script>タグの正しい書き方ってどんな感じになるのですか? <script src="xxx.js"></script> だといけないとか、 <body>中に<script>エレメントがあってはいけないとかよく言われるけれど
>>434 あ、なるほど。ループですべてのタグのclass名を調べて一致すれば良いのか。
となると.className使った方が楽かな。
サンクスです。
>>434 はあまりにもゴミみたいなコードで見ると目がつぶれるから見ないように。
var a = document.getElementsByTagName('DIV');
for(var i = 0; i < a.length; ++i) {
if(a[i].className == 'hoge') { 見つかった! }
}
>>435 HTMLのことはどっかそれなりのスレで学習してね。ただ、<body>中に
あったらいけないとどこに書いてあったかはぜひ教えて欲しい。
>>435 <body>要素に本来の<script>エレメントが内包していると、HTMLがレンダリング
された後でスクリプト解釈が吟味されるためエラー8000000が喚起されて、HTML
要素を場合によっては崩し外部データの読み込みを阻害するから。
>>438 自分でググってみろ。
442 :
通りすがり :2005/06/26(日) 16:47:24 ID:???
>>437 は
>>433 の回答になっていないが?
<DIV class="hoge">〜</DIV>のブロック内子要素を参照したいわけだから。
>>436 のレスを見るに、その模様。
>>437 は<DIV class="hoge">への参照取得しただけ。
リファレンス洗えば誰でも出る内容並べてどうする?
どうも人格的に尋常じゃない奴が目立つね?いいのこれで?
したら、見つかったところで var b = a[i].getElementsByTagName('*'); とかすればいいのかな。ともかく元質問者が何がやりたい のかよく分からん。
>437の人格に異常があるのは同意 >443のソースコードもゴミみたいに汚いな
>>437 子ノードまで参照要らずでinnerHTMLで足りるならば
先に謝っておくよ。失礼しました。読解不足でした。
じゃ、またどこかで。
みんな煽りでもゴミとか言うなよ。仲良くな。
434は一部スペルミスで動かないけれど、ぱっと見て意図を読みやすい優良コードだと思う ここは丸投げスレじゃないから、質問者がどうやればいいのかを汲み取れるコードが 「良いソースコード」なんじゃないだろうか、と437に問いかけてみるテスト。
確かに
>>446 の指摘の通りかも知れん。スマソかった。
ただ、元質問者の意図からすると全部再帰で探す必要が
あるとは今でも思えないなあ。まあそれは好みということで。
>>447 なら「全部再帰で探す必要があるとは思えない」と書いてからソース書けばよかったんじゃね?
了解しますた。
450 :
Name_Not_Found :2005/06/26(日) 19:56:18 ID:wetL9Z/7
演算子で質問です。 if (document.layers) { window.captureEvents(Event.KEYUP | Event.FOCUS); window.onkeyup = function (evt) {....... で、|はどういうことですか?
>>447 は噛み付く割に押しが弱いなw
確かに、前でおだてられたからといって
調子に乗ってなんでも再帰したがる
>>434 はどうかと思う。
ゴミコードぐらいの言い回しは、2chでは挨拶みたいなもんだろ。うなずけたし。
>>422 >リファレンス洗えば誰でも出る内容並べてどうする?
>>433 の口ぶりはそれを感じさせるが。
「タグを取得」とかいってるやつが、まともにDOMメソッドが使いこなせてるとは思わない。
>>452 なんでこんな奴がこのスレに常駐してるんだ?
ま、煽りもマターリも2ちゃんのうち。次の質問ドゾー。
457 :
Name_Not_Found :2005/06/26(日) 22:50:37 ID:UCPUn3AA
ラジオボタンによってテキストを活性、非活性にするプログラムを作りたいのですが
同じ階層にJSPとJSファイルがあった場合、下記のようにするとボタンを変えたときにランタイムエラーが起こってしまいます
どこがいけないのでしょうか?教えてください
ttp://www.futomi.com/lecture/javacss/radio_disabled.html を参考にしていますが…
JSPファイル
<script type="text/javascript" src="common.js"></script>
・・・(略)
<form name="form1">
<td><input type=radio name="said" value="1" onclick="radioChange()" checked >
<input type=radio name="said" value="2" onclick="radioChange()" >
<html:text property="saidText" size ="7" value="" />
</td>
</form>
JavaScriptファイル(common.js)
<SCRIPT LANGUAGE="JavaScript">
function radioChange() {
if(document.form1.said[1].checked == true) {
document.form1.saidtext.disabled = false;
document.form1.said.style.backgroundColor='#FFFFFF';
} else if(document.form1.saidtext[2].checked == true) {
document.form1.saidtext.disabled = true;
document.form1.saidtext.style.backgroundColor='#D4D0C8';
}
</SCRIPT>
>>457 まず
>>2 を読んでこい。どの行でどういうエラーが出てるか
明記しろ。それができないなら帰れ。
そして第2点だが、ここの常連はJSP使いじゃないんで、JSP
に渡すソースじゃなくブラウザに到着したソースを貼ってくれ。
HTMLには「<html:text ... >」という要素はないんで。そもそも
その近辺が問題らしいし。
459 :
Name_Not_Found :2005/06/26(日) 23:08:41 ID:O1Bpy9di
JSPファイル ってなんですか? テキストの活性化って?
>>459 触った事が無いので調べてみた。
流れ的にはCGIのようなものらしい。
サーバーサイドでJAVAが走りつづけるって所からすると、mod_perlとかmod_phpとかそんなかんじかな?
JSPの特徴
JSP はサーバが実行するプログラムである
<% %> タグを用いることで、HTMLの中にプログラムを埋め込むことができる
CGI と異なり、プロセス起動のオーバーヘッドがない
Java の文法で記述でき、Java の利点を生かしたシステム構築ができる
だとさ
461みたいな煽りが嫌いなので反発して見る。 >460 まぁそんな感じ。 実際にはかなり細かい標準化がされていて、高機能かつ高性能になっている。 <% %>の内部にコードをJavaでかけるスタイルはPHPの<?php ?>などと同じだが、 むしろBeansと呼ばれるプログラムのテクニックや 拡張可能なカスタムタグを利用してJSP中に<% %>によるJavaのコードを 一切埋め込まないことを目標にしている。 しかし現実にはカスタムタグを自前でかけるプログラマは少なく、 コードを埋め込み読みづらいページを生成するプログラマが多い。 仮にカスタムタグを完全に用意しても、デザイナーは結局カスタムタグすら使えず、 カスタムタグを用意する意味があまりないという状況もよく耳にする。 ただ高機能なサーバや、Javaによる(第三者も含めた)非常に有用なライブラリが使えるなど 質の高いプログラマさえいればメリットが非常に大きいので、採用されることは多い。
463 :
459 :2005/06/27(月) 00:12:23 ID:???
>>460 ふ〜ん。わかったような・・・。さんくす。
>>461 引っ込んでろ、このヴォケ! (っていうんでしょ、2chでは。こういうとき)
464 :
461 :2005/06/27(月) 00:20:18 ID:???
マジで知らなかったのかよ…
何でもいいけどとにかくブラウザに到着した状態では普通のHTMLに なってるはずなのでそれを貼ってくれないことには。
>>457 これで動くでしょ
function radioChange() {
if(document.form1.said[0].checked == true) {
document.form1.saidtext.disabled = false;
document.form1.saidtext.style.backgroundColor='#FFFFFF';
} else if(document.form1.said[1].checked == true) {
document.form1.saidtext.disabled = true;
document.form1.saidtext.style.backgroundColor='#D4D0C8';
}
}
っていうか、単純ミスですよ。
>>466 そこだけが原因なら。つかHTML側がどうなるのか全然分からん。
そこが納得できないと安心できない。ま、質問者逃げたんなら
しょうがないが。
質問者逃げた ってのもすごいな。当て逃げかよ。
いやいや、よく逃げるよ。過去ログ見れば沢山ある。
自作自演ゴクロウサマ
自作自演 ってのもすごいな。狂言かよ。
いやいや、よくあるよ。レスした時間見れば大体分かる。
いや、時間でアシがつくほどバカじゃないだろ。ちなみに疑惑のレスあげてみてよ。
英文法の SVO が、OOPL で O.V(S) みたいに倒置されるのはごく当たり前だけど、
change the radio をキャメル表記する時、changeRadio にしなかった
>>457 は
一風変わった言語感覚の持ち主ですね。
if (boolean == true) みたいな意味の無い冗長を
>>466 が if (boolean)
に直してやらなかったのは不思議ですね。
つまり質問者と回答者が同程度のスキルに見えてしまいますね。
だから自演臭いのではないですか。
あああああ、
>>408 でやっちゃってるわ馬鹿オレ。とりあえず応急処置した。
var src = new RegExp( substring
.replace( /\\/g, '\\\\')
.replace( /\./g, '\\.')
.replace( /\*/g, '\\*')
.replace( /\+/g, '\\+')
.replace( /\?/g, '\\?')
.replace( /\|/g, '\\|')
.replace( /^\^/, '\\^') .replace( /\$(?=\d|$)/g, '\\$')
.replace( /\(/g, '\\(') .replace( /\)/g, '\\)')
.replace( /\{/g, '\\{') .replace( /\}/g, '\\}')
.replace( /\[/g, '\\[') .replace( /\]/g, '\\]')
.replace( /^\s+|\s+$/g, '\\s*')
.replace( /[\t\u0020]+/g, '[\\t\\n\\f\\r\\u0020]+')
.replace( /\r\n/g, '[ \\r\\n]*')
.replace( /\r/g, '[ \\r]*')
.replace( /\n/g, '[ \\n]*'),
'g');
あと、実質的に、たとえXMLであろうともEntityReference探索は必要無いな。
というか、そもそもEntityReference#nodeValue == nullだった。orz
radioChangeが一風変わったとは言えないのじゃないかな。品詞使用上の発想の ちがいでしょ。関数名を動作に重点をおけば、changeRadio が適当かもしれない (makeArrayのように)、しかし、動作の操作要素としてとらえれば、名詞的に radioChangeとしても別段おかしくはない。これでもって自演の証拠とするには、 理由が状況証拠にもとづきかつ自由裁量の妥当性を超えていないような希ガスる。
>>476 その場合、国際英語ネイティヴな我々日本人は、radioChanger と命名しますよね。
(JS-DOM-Events において) 動作の操作要素としてとらえるレベルの人間が、
HTMLのイベント属性に書きません。EventListener として書くでしょうね。
だから、一風変わっていることに間違いは無いでしょう。
// 誰かの自演を直覚して気にしているのは一名だけですよね。
// その一名が果たしてどれを指していたのか不明のままですし。
// 一応、少なくとも私は2chで目にする自演などどうでもいいんですよ。
そうだよ、自演なんて珍しくもない。単に個々の書き込みが まっとうかどうか考えるので十分。厨房な書き込みする奴は 自演で取り繕ったって結局同じボロが出るだけ。前例多数の 様な希ガス(ry
chRadio と命名したい気分です。
fとかtestとか命名した…うぐっ!!!
ま、ようするに、枝葉の1枚におちた雀の涙みたいなもんだな。
あるいは、キムジョンイルのお仕置きにビクビクして五輪に出た選手とか?
>482 なにそれ?
どおでもいい、とかいうんだろ。
>>479 それだとcharRadio(あるか分からんが)とも読めるのでは?
radioChangeは、初心者臭いが分かるからいいんじゃないかなぁ。
R(r)adioChangerとするまでにOOP設計されてるとも思わんし、
まあchangeRadio辺りが妥当では?
(俺はchngRadioとかしそうだが)
まあまあ、次の質問どうぞ
WinのIE5.x と MacのIE5.x だと、JS周りの挙動って違う? CSSやDOCTYPEの挙動が違うのはわかるが、JSではどうなんだろう。
>>486 その2つのブラウザは名前以外完全に別物なんだってば。IE固有部分は
たぶん結構違うんではと思うがどこが違うかはよく知らない。
普通にクロスブラウザな記述しておけばどちらもそこそこ動くよ。
488 :
Name_Not_Found :2005/06/27(月) 16:42:44 ID:NrlwyuKg
formの中身をボタンで複数のseverにsubmitしたんですが上手く行きません。
<form action="" name="form1"method="POST" enctype="multipart/form-data"target="_output">
<input type="hidden" name="data_type" value=".jpg">
<input type="file" name="data_file">
<input type="text" name="data_number" value="">
<INPUT TYPE="BUTTON" name="upload" VALUE="sever1" onClick="Form1.action='
http://www.sever1.com/upload.php ';Form1.submit();">
<INPUT TYPE="BUTTON" name="upload" VALUE="sever2" onClick="Form1.action='
http://www.sever2.com/upload.php ';Form1.submit();">
<INPUT TYPE="BUTTON" name="upload" VALUE="sever3" onClick="Form1.action='
http://www.sever3.com/upload.php ';Form1.submit();">
・
・
・
<INPUT TYPE="BUTTON" name="upload" VALUE="sever9" onClick="Form1.action='
http://www.sever9.com/upload.php ';Form1.submit();">
<INPUT TYPE="BUTTON" name="upload" VALUE="sever10" onClick="Form1.action='
http://www.sever10.com/upload.php ';Form1.submit();">
</FORM>
もしくは1回のボタンクリックで登録してあるサーバーに全部アップロードできる
ような物は作れないでしょうか?
>>488 まず第一に、action属性に指定するのはURLであり、そこにJavaScript
コードを混ぜることはできない。ちゃんとHTMLを理解しろ。
次に、一度submitするとページ内容はサーバから返送されるページで置き
換わってしまうため、それ以上JavaScriptコードが実行されることはない。
これを避けるには送信するフォームごとにフレーム、iframe、ないし別窓
を1つずつ用意する。しかしおたくの場合、<input type="file">があるが
その値はスクリプト側では設定できないため、毎回手で設定する必要がある。
これらの面倒を避けて1つのフォームであちこち送信する別の手段として、
あぷろだ側で「204 No Content」を返してくれれば、別のページに遷移せず
そのまま手元側のスクリプト処理を続けられる。ただしそれにはあぷろだ
側を「204 No Content」を返すように改造できなければだめ。
どれも駄目ならあきらめれ。
>>488-489 すまん、action属性にURLとJSが混ぜてあると思ったのは見間違い
だった。そそっかしくていかんな… が、第二段落以降の指摘は
合ってると思うよ。
>>488-491 んー、もしかして「どれか1つに」送信できればいいの?そうか、そういう
質問なのか… だったら
>>491 がニアミスで「this.form.submit()」だな…
ショボーン。
493 :
Name_Not_Found :2005/06/27(月) 17:10:42 ID:NrlwyuKg
>490-491 まるっきり動かない訳ではなくupすると サーバー側からデータエラーって戻ってきてしまうんです。 おそらくデータタイプかfileの所でつまずいてるのかとも 思ってます。 画面が変わらないようにform内でtargetを指定して他に飛ばすようにはしてます。 サーバー側に手を加える事ができないので[204 No Content] は無理ですね。
495 :
Name_Not_Found :2005/06/27(月) 17:12:05 ID:NrlwyuKg
>492 コンセプトとしては同じデータを登録してあるサーバー 全部にupしたくて毎回全部入力する手間を省きたい訳です。
>>493 エラーの内容書こうぜ。
あとsage進行ヨロ
497 :
Name_Not_Found :2005/06/27(月) 17:18:36 ID:NrlwyuKg
>496 エラー内容はデータが不正ですとしか。 推定だとfileの情報が上手く伝わってない感じがします。
498 :
Name_Not_Found :2005/06/27(月) 17:21:21 ID:NrlwyuKg
それかfileの内容をcookieとかに記録して form1 form2 form3と複数のformに読み込ませて 個別にupするような感じも難しいでしょうか?
>>488 ・CGI の内部で、セキュリティー対策として、別サーバーからのリクエストだと蹴る処理してたりはしないの?
・JSで切り替える前に、直に action 内に そのサーバ指定して投稿したら、うまくいくん?
・「Form1」 って変数はどこで定義してんの?
500 :
勉強不足でごめんなさい :2005/06/27(月) 17:30:51 ID:KbROjAq9
ひとつのボタン画像をクリックすると ・指定したURLに飛ぶ ・指定した上記と別のURLを新しいウインドウでポップアップ させたいのですがどうしたら良いかわかりません いろいろ探したのですが、サンプルを見つけることができませんでした どなたか教えていただけないでしょうか、よろしくおねがいします
>>500 <img src="〜" onclick="window.open('URL'); location.href='URL2';">
いい加減sageないとスルー対象だぞ それとその道の人間ならエラーログを見れば原因は一発でわかる だからエラーを書けと言っている。 それと推定するな。原因がある以上確実な解決方法はある 推定すれば泥沼にはまる。 それとクッキーにファイル情報持たせるなんて怖いこと考えるな もまいはOSClasherでつか? 次以降も腐ってるようだったら漏れはスルーする
503 :
Name_Not_Found :2005/06/27(月) 17:40:48 ID:NrlwyuKg
>499 切り替えないで個別にやる分には上手くアップロードできます。 別ページでcookieを設定 その後アップロード用のページ内で cookie情報を取得 document.form1.datafile.value=... document.form2.datafile.value=... document.form3.datafile.value=... みたいな感じでやりたいのですがfile属性の為駄目そうなんです。 セキュリティーはこちらのIPを許可してあるみたいで 蹴られたりはしないです。
クッキーに持たせたところで、<input type="file"> にはJSで値入れられないからどうでもいいと思うけど。
505 :
Name_Not_Found :2005/06/27(月) 17:44:55 ID:NrlwyuKg
>502 クラッシャー違いますよ。 クッキーにはちゃんと var nExpTime = 1*1*10*60*1000;と宣言入れてます。 社内でしか使わないし。 クッキーセット→アップでその後は賞味期限終了 するようにしてます。 エラーは不正なデータとしか画面が返してこないので 具体的にどうエラーが出てるのか不明です。
506 :
Name_Not_Found :2005/06/27(月) 17:47:54 ID:9kPniFpH
いい加減sageるって何ですか?あと、スルーというのは何をするんでしょうか?
どういうときに 「不正なデータ」 がでるのか、PHP の中見て調べようよ。
あぁ、もうスルーでいいや。
>>493-505 あのー、まず単独の、1個のフォームのHTMLを作ってそれでちゃんと
アップロードできることを確認したかな? それが駄目ならhtmllint
などでHTMLをチェックし、またサーバ側がmultipart/form-dataに
対応していることを確認する。こんなのJavaScriptと全然関係ないぞ。
そういうバグ取りはよそで済ませて欲しいんだが。
<form action="" name="form1"method="POST" enctype="multipart/form-data"target="_output">
この「target」の前に空白がないのはまずいと自分は思うが、
そんなのJSスレの住人に見つけさせる奴は死ねと思う。
だからsageろって^^; Email欄にsageって入れろ 釣りか? phpはおまいが作ったんじゃないのか。 .php内の「不正なエラー」って記述されてるところを見れば原因は一発だろ。 phpスレじゃないから詳細は書かないが。 つかハゲっぽくスレ違いな気がしてきた。
*** 以後このスレ違いなPHP屋はスルー決定 ***
512 :
510 :2005/06/27(月) 17:52:04 ID:???
>510 506は私じゃないです。 PHPは私が作った物ではありません。 Emailの欄にsageと入れました。 >509 単独の1個のformではちゃんと動きます。
そろそろ 手とり足とり に逝けばいいのに。
515 :
510 :2005/06/27(月) 17:57:56 ID:???
>>513 うっわ二重に嵌められたのかよ俺
>>506 カッコヨスギ
まぁなんだ
php作った奴に原因聞け。多分ここで聞いても解決はしないと思うぞ
以上終了。
次の患者さん診ようぜ
>515 PHP作った人は過労で現在入院中です。 >相談に乗ってくれた方々 ありがとうございました。
>>516 そこは笑っていいところなのだろうか orz
>517 こっちは真剣です。 笑えません。 もう少し自分で頑張ってみます。
>>474 ワロタ
どこ見てんの?
ハードルあげてどうすんだよ
単独の1つのformと比較して
色々やってみた所。
単独の方は
最後の部分が
<input type="submit" name="upload" value="up">
試しにname="upload"を削除して試した所
同じエラーが出ました。
さっきの物にも
<INPUT TYPE="BUTTON" name="upload" VALUE="sever10" onClick="Form1.action='
http://www.sever10.com/upload.php ';Form1.submit();">
とname="upload"とつけているんですが
これが反映されてないんだと思います。
どうやったら反映させられるか教えて下さい。
もう少し自分で頑張るんじゃなかったのかと小一時間・・・ orz 以降スルーしようぜ コイツ問題を解決する気がなさそうだ
522 :
勉強不足でごめんなさい :2005/06/27(月) 18:55:16 ID:ZQHKMiO6
>500 ありがとうございました、早速試して見ました、感動もんです。本当にありがとうございました 教えていただいた方法でうまくいくのですが ひとつ問題なのが、IEポップアップブロックのせいで 一時許可をしてやらないと両方のページが開けないようです なにかポップアップブロックをうまくすりぬけて、普通のIEの設定で 両方のページを表示する方法はないのでしょうか? どなたか教えてください、よろしくおねがいします。
じゃあ最後だけど
>>520 <input type="button" name="upload" value="〜1" onclick="〜">
<input type="button" name="upload" value="〜2" onclick="〜">
・・・
↓
<input type="hidden" name="upload" value="up">
<input type="button" value="〜1" onclick="〜">
<input type="button" value="〜2" onclick="〜">
・・・
でどうよ。
>>522 ローカルだとブロックでるのはどうしょうもない。
でもサーバにUPしたら普通は出なくなるもんだ。
>523 sumitに対してname="upload"と付け加えたいので それだと動かないです。 後一歩の所なんですけどね。
sumit←submitのミスです。
527 :
勉強不足でごめんなさい :2005/06/27(月) 19:20:11 ID:ZQHKMiO6
>524 早速試してみました。完璧です!ありがとうございました!
>>525 は? 意図がわからんw
button に name つけると 送信するとき、
〜&name=upload&name=upload&name=upload&name=upload&
ってなるだろ? いいのかそれで。
だったら hidden でひとつに済ますか、
type=button じゃなくて type=submit にして onsubmit で処理すればいいだろ。
何やってんだか。
まあ、ただのグチなので、もう終了で。 次の方ー。
529 :
Name_Not_Found :2005/06/27(月) 21:29:08 ID:6ZXzGPHT
今後のためにsageるやり方教えてください。 勉強不足でごめんなさい。
531 :
Name_Not_Found :2005/06/27(月) 21:53:03 ID:NpWa9cLW
>>530 完璧です!ありがとうございました! では、一切sageないことにします。
sageなくていいんですね。よかった。sageないのは、vol-38:530でのあ
なたの発言のせいですから一切文句はなしですよ。
533 :
Name_Not_Found :2005/06/27(月) 22:23:06 ID:E3o3YA0b
おもしろいの?これ
(月曜は毎週おかしいのが交じる) はい、次の質問。お次のかた、どぞー。
OS・ブラウザ毎のfont-size,letter-spacingの違いを統一するために javascriptでブラウザ毎に振り分けて cssで指定したいのですが、 残念ながら当方は、mac環境でwinがなく、確認出来まません。 なので、OS・ブラウザ毎のfont-size,letter-spacing等を 纏めているサイトはないでしょうか? 宜しくお願いします。
>>536 JSスレの質問内容ではないと思われ。CSSスレへ逝けば。
538 :
536 :2005/06/28(火) 00:31:13 ID:???
失礼しました。 CSSとjavascriptスレを行ったり来たりしてるうちに こちらに誤爆してしまいました。
>>535 確かに、教えて君ならまだしも+基地外気味が多いな。
月曜は納期じゃなく大した仕事もないんで、
見聞を広めるため色々荒してます。
そんなところじゃないか?
なんか最近良質な質問がないよな 次の患者秋刀魚だー?
良質かどうかはわからないけど質問です。 スクリプトの中でIFRAMEを作って、そのフレーム中のエレメントを得たいのだけれど、 <script> var iframeElement = document.createElement("iframe"); document.body.appendChild(iframeElement); iframeElement.src = "iframe.inner.html"; alert(iframeElement.contentWindow.document.getElementById("inner_element")); <script> <!-- iframe.inner.html--> <html><head><title>inner</title></head><body><div id="inner_element">x</div></body> このコードだとalertは"null"を表示します(iframe.contentWindow.documentまではあるらしい) iframeがまだロードされる前なのでonloadハンドラを設定しようと思っても、 iframe.contentWindow.onload も、 iframe.contentWindow.document.onload も働きません。 どのようにすればエレメントが取得できるでしょうか。
>>543 試してないけど、
<script>
var iframeElement = document.createElement("iframe");
document.body.appendChild(iframeElement);
iframeElement.src = "iframe.inner.html";
function func() {
alert(iframeElement.contentWindow.document.getElementById("inner_element"));
}
</script>
<!-- iframe.inner.html-->
<html><head><title>inner</title><script>
function onloadHandler() { parent.func(document.getElmenetById("inner_element")) }
</script></head><body><div id="inner_element">x</div></body>
では駄目ですか?
545 :
544 :2005/06/28(火) 11:22:07 ID:???
ミスった function func(element) { alert(element); }
まあ・・・ iframeElement.contentWindow.onload = func; ってやるのがよいと思うぞ。
>>543 var cw = document.body.appendChild( document.createElement( 'iframe' ) ).contentWindow;
cw.addEventListener( 'load', function (e) {
alert( cw.document.getElementById( 'inner_element' ) );
}, false);
cw.location.href = "iframe.inner.html";
過去にwindow.openで似たような回答をした。
別窓は WinIE でも attachEvent でうまくいくが、今回はうまくいかなかった。
>>546 …と思うのだが、Mozで動くがIEで動かない(onloadが呼ばれない)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var f = document.createElement('iframe'); document.body.appendChild(f);
var w = f.contentWindow;
w.onload = function() { alert(w.document.getElementById('d0').innerHTML); };
w.location.href = 't2.html';
}
</script>
</head><body><button onclick="test()">Test</button></body></html>
さらに、フレーム内にロードされるHTMLのbody onloadも動かない ようなんだけど…なんかIEのいつかのバージョンからそう変わった みたいだ。昔はできていたのに。
怒ったぞ、もう力技だ!!! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> <script type="text/javascript"> var timeid; function test() { var f = document.createElement('iframe'); document.body.appendChild(f); var w = f.contentWindow; var g = function() { alert(w.document.getElementById('d0').innerHTML); }; if(w.addEventListener) { w.addEventListener('load', g, false); } else if(w.attachEvent) { timeid = setInterval(function() { if(w.document.readyState == 'complete') { g(); clearInterval(timeid); } }, 20); } w.location.href = 't2.html'; } </script> </head><body><button onclick="test()">Test</button></body></html>
IE の onload は <iframe> にもあった。 var i = document.body.appendChild( document.createElement( 'iframe' )); i.attachEvent( 'onload', function (e) { alert( frames[0].document.getElementById( 'inner_element') ) }); frames[0].location.href = 'iframe.inner.html';
>>551 スバラシイ! いちお、IE専じゃないバージョン。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var f = document.createElement('iframe'); document.body.appendChild(f);
var w = f.contentWindow;
var g = function() { alert(w.document.getElementById('d0').innerHTML); };
if(w.addEventListener) { w.addEventListener('load', g, false); }
else if(f.attachEvent) { f.attachEvent('onload', g); }
w.location.href = 't2.html';
}
</script>
</head><body><button onclick="test()">Test</button></body></html>
553 :
Name_Not_Found :2005/06/28(火) 14:01:57 ID:zaFdA6n+
swfのランダム表示では上記のように記述しても下に隙間が出来てしまいます。 どうしたらよろしいでしょいうか?お願いします。 <td valign="middle" height="360" colspan="0" nowrap align="center"><script type="text/javascript"> var files = ['flash/index.swf','flash/index3.swf']; var filename = files[Math.floor(Math.random()*files.length)]||files[0]; document.writeln('<EMBED style="WIDTH: 720px; HEIGHT: 360px BORDER: 0px"'); document.writeln('src="' + filename + '" width=720 height=360 BORDER=0px"'); document.writeln('type="application/x-shockwave-flash">'); </script> </TD>
attachEvent は Opera7 にもあるから、Opera7.23 でテストした。 いきなり、HTMLIFrameElement が取得できないので、のけぞる。仕方なく、 document.addEventListener( 'DOMNodeInserted', function (e) { alert( frames.length ); e.target.src = 'iframe.inner.html'; }, false); document.body.appendChild( document.createElement( 'iframe' )) としてみたが、結果は 0。また、<iframe> の onload も無い。 Opera7 はタイマーに頼って frames[...].document の load を待つしかないのかもしれない。 // このテストで Opera7 が IE の Element#contains() を // 実装していることに気づいた。 // (DOM3-Core の Node#compareDocumentPosition() みたいなもの)
555 :
Name_Not_Found :2005/06/28(火) 14:08:09 ID:zaFdA6n+
>>553 質問の仕方が間違ってました・・・。
もう一度。
swfのランダム表示ですが下記のように記述しても一番下に下に隙間が出来てしまいます。
どうしたらよろしいでしょうか?お願いします。
<td valign="middle" height="360" colspan="0" nowrap align="center"><script type="text/javascript">
var files = ['flash/index.swf','flash/index3.swf'];
var filename = files[Math.floor(Math.random()*files.length)]||files[0];
document.writeln('<EMBED style="WIDTH: 720px; HEIGHT: 360px BORDER: 0px"');
document.writeln('src="' + filename + '" width=720 height=360 BORDER=0px"');
document.writeln('type="application/x-shockwave-flash">');
</script>
</TD>
>>555 HTML直書きの場合には隙間はできないわけ?
557 :
Name_Not_Found :2005/06/28(火) 14:37:44 ID:zaFdA6n+
>
>>556 HTML直書きの場合には隙間はできないわけ?
はい。できません。
558 :
Name_Not_Found :2005/06/28(火) 15:02:19 ID:zaFdA6n+
>>556 現段階のソースです。
<TD width="380" align="left" bgcolor="#FFFFFF" valign="top" height="450">
<script type="text/javascript">
var files = ['flash/01.swf','flash/02.swf','flash/03.swf','flash/04.swf','flash/05.swf','flash/06.swf','flash/07.swf','flash/08.swf','flash/09.swf','flash/10.swf','flash/11.swf','flash/12.swf','flash/13.swf'];
var filename = files[Math.floor(Math.random()*files.length)]||files[0];
document.writeln('<EMBED style="WIDTH: 380px; HEIGHT: 450px BORDER: 0px"');
document.writeln('src="' + filename + '" width=380 height=450 BORDER=0"');
document.writeln('type="application/x-shockwave-flash">');
</script>
</TD>
>>557-558 ちょっと面倒でもテーブル全体をdocument.writeln()で書き出すのはどう?
560 :
Name_Not_Found :2005/06/28(火) 15:29:36 ID:zaFdA6n+
>>559 さんへ。
すいません・・・。自分初心者なのでdocument.writeln()の記述方法がわかりません・・・。
教えていただけるとうれしいです。
>>560 初心者は言い訳にならないだろ。HTML直書く変わりに''で囲んでdocument.
writeln()に入れればいい…ってそれも分からないならこのスレは無理で
まずチュートリアルサイトとかで勉強するしかないね。
最近javascriptの勉強をはじめました。コールバック?の使い方とかがいまいち理解できません。2DマップのRPGで主人公を上下左右に動かすのにコールバックというものを使いたいのですが、 bodyの最後に <SCRIPT LANGUAGE="JavaScript"> // タイマー本体 var timerID; alert("var timerID; ok"); timerID = setTimeout( "keycheck()" , 50 ); </SCRIPT> を書いて、headにボタン押すまで永遠ループのkeycheck()と押されたときに実際に動かすgameCallBack()を //タイマー初期化&入力チェック function keycheck(){ clearTimeout( timerID );// タイマークリア window.document.onkeydown = gameCallBack(); setTimeout( "keycheck()" , 50 ); } と //じっさいに動かす function gameCallBack() { clearTimeout( timerID );// タイマークリア //キーコード取得 var keyCode; keyCode = window.event.keyCode; 〜〜〜〜〜〜〜長いので略〜〜〜〜〜〜〜〜〜 //画面更新 x=newX; y=newY; lyrSetPos("hero",x,y); } という風に記述したのですが、主人公微動だにせず…ヘタレなソースですが、どのように間違っているか教えていただけないでしょうか?
563 :
Name_Not_Found :2005/06/28(火) 15:51:02 ID:MDJWhByS
『このページを印刷する』というリンク(?)を作りたいのですが、どのようにすれば良いでしょうか?
>>563 検索すれば瞬時に見つかるだろ。
>>2 を読め。もう来るな。
>>562 なんか設計方針に納得がいかん。なんでonkeydownだけセットして、
単にキーが押された時に動くようにしちゃいかんの。
それはともかく。
> window.document.onkeydown = gameCallBack();
これは「gameCallBack()を呼び、帰って来た値をonkeydown属性に
入れて」いるがそれがやりたいことなのかね?普通、「関数を」入れる:
> window.document.onkeydown = gameCallBack;
>>562 ここはゲーム作成の話題を扱うわけじゃない
聞きたきゃRPG云々のクダリは削除すべきだな
window.document.onkeydown = gameCallBack();
window.document.onkeydown = gameCallBack;
じゃないのか?
566 :
Name_Not_Found :2005/06/28(火) 16:24:43 ID:YLn4QHhb
はじめまして。質問させていただきます。 サンプルを探しつつjavascriptで割り算の計算式を作って、 結果を表示させるまではよかったのですが、割り切れない場合に 小数点2以下を切り捨てようとした所、やり方がわからなくて詰まっています。 検索して調べたところ、「Math.floor」というのを使うっぽいのはわかったのですけど 「小数点以下切り捨て」になってしまいます。どうすれば小数点2以下を切り捨てに できるのでしょうか?アドバイスをよろしくお願いします。 例) 40.25555555→40.2 にする 以下、ソースです-------------------- <SCRIPT language="javascript"> <!-- function calc_sum(frm1) { sum1 = eval(frm1.num1.value) / eval(frm1.num2.value) / eval(frm1.num2.value); frm1.num3.value = sum1; } //--> </SCRIPT> <FORM> <INPUT size="4" type="text" name="num1"> <B>+</B> <INPUT size="4" type="text" name="num2"> <B>=</B> <INPUT size="5" type="text" name="num3" readonly> <INPUT type="button" name="calc" value="計算" onclick="calc_sum(this.form)"> </FORM>
>>566 40.25555555→40.2
40.25555555*10/10→40.2
10倍して Msth.floor して、 10でわりな。
>>548-553 > iframe
まあもう終わったみたいでアレなんだが、
iframe 作るとき id 入れてやって、 window[id].onload ってやると結構何でも動いた覚えがあるんだけど。
>>567-568 アドバイスありがとうございます。
お二人のレス見て、数分かかっちゃいましたが、理解できました。
凄い単純な事なんですね。「あ〜」って声出ちゃうほど。
プログラマさんとかたまに仕事で話したりしますけど、みなさん賢いというか
なんというか、数字扱うプロだと感じますね。
今から書き方調べて、試行錯誤してみます。
ありがとうございました〜
571 :
567 :2005/06/28(火) 17:30:59 ID:???
>>570 あんたは鰓い。教えた絵画ある。がんばれ!
574 :
567 :2005/06/28(火) 18:42:43 ID:???
>>572 そりゃ、あんたが、人のアラを見つけてはわからないふりをして議論を吹っかける
機会を狙っているタチの悪い性格の人間だからだよ。もっと心でものを考えろ。
ふりではなく、本当〜にわからないなら、プログラムはあきらめろ。
576 :
573 :2005/06/28(火) 18:46:02 ID:???
>>574 スルーで。
>>568 と比較してどっちが判りやすいかは一目瞭然だろ
舌足らずなのに否定されて逆切れカコワルイ
577 :
Name_Not_Found :2005/06/28(火) 18:56:40 ID:L1scxRGJ
質問 function foo() { var b = document.documentElement || document.body; if(b.addEventListener) { // Gecko b.addEventListener('keydown', function(e){f(e.keyCode);}, false); } else if(b.attachEvent) { // IE b.attachEvent('onkeydown', function(){f(event.keyCode);}); } function f(e) { alert(e);} foo()呼出すとアラートが出るのだが、 F5を押したとき更新処理がされるんだよね。 画面遷移無しでアラートだけ出すにはどうすればいいのか教えてくれまいか。
578 :
567 :2005/06/28(火) 19:27:49 ID:???
>>576 べつに逆切れはしてないよ。
あんたが「ふり」でものをいうから、心裏を解説したまでのこと。あんた、自分
でいってるじゃん。「
>>568 と比較してどっちが判りやすいかは一目瞭然だろ 」
って、ということは、「何言ってるかわからん」(
>>572 )は「ふり」だという
ことを自分で語っているんじゃないの。自分をごまかすなよ、あんた。
これでも、「わからない」というのなら、どういう心理状態がそのような発言を
誘発するのかを、もっとわかりやすくかつするどく解説してやってもいいけど。
荒れてますな。裏も何も読まずに単にそれぞれの投稿が
どうかだけで素直に判断すれば。
>>577 一般にイベントハンドラ関数の最後にreturn false;を入れれば
本来の動作は抑止されるんで、やってみたらどうかな。
>>582 うむり。そのような突っ込みは必ず来ると思っていた。
一応質問前にも確認したが、結果は芳しくなかったですよ。
function foo()
{
var b = document.documentElement || document.body;
if(b.addEventListener)
{ // Gecko
b.addEventListener('keydown', function(e){f(e.keyCode);}, false);
}
else if(b.attachEvent)
{ // IE
b.attachEvent('onkeydown', function(){f(event.keyCode);});
}
function f(e) { alert(e); return false;}
IE6の場合、更新処理はストップするがアラートも出ない。
エラー吐いてる訳じゃ無いっぽいがこれは俺が脳貧の所為だと思う
識者解説ヨロ
geckoの方はアラートが出るんだが画面は更新されてしまう
俺が脳貧(ry
>>583 function f(...) { ....; return false; } -- falseを返す。
function g(...) { ....; return f(...); } --- fの結果を返す。
function h(...) { ....; f(...); } --- 何も返さない。
この違いが分かるかな?分からなければ向いてないという他ないが。
とりあえず b.addEventListener('keydown', function(e){f(e.keyCode);return false;}, false); こういうことだな。
587 :
577 :2005/06/28(火) 20:51:03 ID:???
あー。素でアホだったな。まぁいいや 結果は変わってないような気がするんだよな 誰か実際に動かして再現したヤシは居ないですか
589 :
577 :2005/06/28(火) 21:10:57 ID:???
>>588 応yea
function foo()
{
var b = document.documentElement || document.body;
if(b.addEventListener)
{ // Gecko
b.addEventListener('keydown', function(e){f(e.keyCode);return false;}, false);
}
else if(b.attachEvent)
{ // IE
b.attachEvent('onkeydown', function(){f(event.keyCode);return false;});
}
function f(e) { alert(e); }
まだF5押しても更新されるよーなんで?
関係ないかもだが、
function (e) { 〜 ; e.cancelBubble = true; return false; }
を入れてみたらどうかな。
>>581 当たり(笑)
あの後出かけて今帰ってきたんだけど、
しかし、別にアラ探ししてるわけではないし、今までしたこともなかったんだが、
なんか、勝手にそんなヤツにされてしまってるな… orz
まあどうでもいいか。
しかし、何度見ても
>>567 がわからんw 誰か分かる人いたら解説してくれない?
>>589 ということは、F5とかはreturn falseで止められないという
ことになるかな。残念ながら。
592 :
577 :2005/06/28(火) 21:40:59 ID:???
40.25555555→40.2
40.25555555*10/10→40.2
憶測だが
上の分は引用
下の分で「下の数字を10倍して(切り捨てて)10で割ればいい」
という感じで言いたかったんだろうな。
573=572っていう風に見てるフシもあるし流れ嫁ない厨決定
そう考えると584=567?
まぁいいや漏れID見えないし。
>>590 入れても変わらんかった。
スパッと解決してくれるネ申求む
593 :
577 :2005/06/28(火) 21:42:00 ID:???
質問お願いいたします。 複数のサムネイル画像を並べて、それぞれのサムネイル画像にマウスオーバーすると、 同じページのインラインフレームで用意したある1箇所にテキスト+大きい写真の各説明HTMLファイルを表示 させたいのですが、わかりませんでした。。泣 画像にマウスオーバーした際にある1箇所にテキストを表示することはできるのですが、 マウスオーバーで、インラインフレームの中のHTMLファイルを変更させる事ができませんでした。 どなたかお助けお願いできませんでしょうか。。宜しくお願いいたします。
ちょっとどうしたいのかよくわからんかったのだが、 HTMLファイルの変更なら、単に、 <iframe src="〜" id="hoge"> として、 onmouseover = function () { // どっかからその HTML のURLを引っ張ってくる var url = 〜〜〜; var iframe = document.getElementById('hoge') iframe.src = url; } でいけるんじゃねーの? 「1箇所にテキストを表示することはできる」 のなら、ある程度はJSわかるものと仮定して話してるけど。
>>594 document.getElementById("hoge").innerHTML = "テキスト";
document.all("hoge").innerHTML = "テキスト";
document.layers["hoge"].document.open();
document.layers["hoge"].document.write("テキスト");
document.layers["hoge"].document.close();
document.画像名.src = "hoge.jpg";
↓
parent.フレーム名.document.all("hoge").innerHTML = "テキスト";
parent.フレーム名.document.getElementById("hoge").innerHTML = "テキスト";
parent.フレーム名.document.layers["hoge"].document.open();
parent.フレーム名.document.layers["hoge"].document.write("テキスト");
parent.フレーム名.document.layers["hoge"].document.close();
parent.フレーム名.document.画像名.src = "hoge.jpg";
>>577 やってみたけど、だめ。 お手上げ。
F1 とかもだめだしな。 ブラウザのイベントのがJSより優先ってことかね。
まあそりゃそうか。
598 :
594 :2005/06/29(水) 00:12:21 ID:???
>>598 「画像にマウスオーバーした際にある1箇所にテキストを表示する」
っていうのはどうやってやってるの?
「テキストを表示する」部分を
>>595 を参考に書き換えればいいと思うけど。
>>598 …結構やる気ないのね…。
じゃあ、こんな質問長引かせるのもなんなので
<a href="写真2.html" onmouseover="hogehoge(this.href);" target="hoge">
<img src="写真2.jpg" alt="写真2"></a>
・・・
<iframe id="hoge" name="hoge" src="hoge.html"></iframe>
<script type="text/javascript">
function hogehoge (url) {
var iframe = document.getElementById('hoge')
iframe.src = url;
}
</script>
でやってみたら?
// target とか name とかは見逃してちょ。
案外これで満足したりして。
603 :
594 :2005/06/29(水) 00:52:01 ID:???
>>599 レス有難うございます。
今のソースはこんな感じです。
img src="画像"
onmouseover="document.getElementById('nakami').innerHTML='テキスト"
onmouseout="document.getElementById('nakami').innerHTML='テキスト'">
<td id="nakami">最初に表示しておくテキスト</td>
これは普通に画像にマウスオーバーしたらテキストだけが表示されるものなので、
テキストじゃなくって、インラインフレームを使って、別のHTMLファイルの中身を表示させたいんです。。。
説明ヘタでごめんなさいです。
604 :
594 :2005/06/29(水) 00:58:56 ID:???
皆様>> ご指導ありがとうございます。しつこくてすいませんでした。。感謝です。 教えていただいた内容でやってみます。 遅い時間にありがとうございましたです。
きょうの巨億ん: 質問者は何がわからないかという事がわからない。従って説明が屁多。 質問者が自分のコードを出したとたん、たちまち解決することが多い。
606 :
Name_Not_Found :2005/06/29(水) 09:02:36 ID:YmfUisqp
質問です。 function (e) {.....}という関数を見ますが、この場合、eという引数は 特別のものですか?
>>605 自分のコード出したら「そんなこと聞いてない」とか逆ギレされた
ことあるよ。ひでえ話だ。
>>606 いいえ、特別のものではありません。xでもyでも、とにかく関数
本体の中で参照するものと一致してればいいんじゃない。分から
なければチュートリアルサイトでも逝ってね。
>>605 そうやって甘やかすからつけ上がるんだろ。ちゃんと追求して
どういう仕様を求めているのかきちんと言わせるようにしないと、
プログラムなんて作れるようにならないと思うが。
>>606 Event, Error, Element のイニシャルである場合が多いと思う。
そして、無名関数なら、Event である場合が圧倒的に多いと思う。
文法に則していれば名前は何でも構わないとはいえ、
注意点が無いわけではない。
function (event) { .. }
function (element) { .. }
としないようすることである。
前者は、IE が自動的に作る event という名前のイベントオブジェクトを
関数内部から参照できなくなる。
後者は、WinIE が HTC がつけられた要素オブジェクトに HTC 内で
element という名前を自動的につけるから、当該イベントの問題と同様に、
関数内部からこれを参照できなくなる。
610 :
577 :2005/06/29(水) 10:19:54 ID:???
>>597 むりか〜
mozはともかく、winのieだったら無理やりにでもこじつけられそうな感じはするけどな。。
ここらへんを詳細に渡って説明してるドキュメントとか無いのかね。
ドキュメント厨出番ですよ
>>577 W3C: Event#preventDefault()
IE : Event#returnValue = false
HTMLのイベント属性
属性値で(つまり自動的に作られる無名関数直下で) return false
または、その無名関数直下で(IEはどこからでも)参照可能な event という名前の
イベントオブジェクトに対して、
event.preventDefault() するなり、event.returnValue = false するなり。
JSのイベントプロパティ
イベントハンドラ(イベントプロパティにセットされた関数) 直下で return false
または、イベントハンドラの引数(e)がイベントオブジェクトなら、e.preventDefault()
または、IEなら、event.returnValue = false
attachEvent, addEventListener
どちらも、EventListener の引数は Event。
e.returnValue = false するなり、e.preventDefault() するなり。
イベントが伝播していった先で既定の動作をされては困るなら、伝播中止。
W3C: Event#stopPropagation()
IE : Event#cancelBubble = true
ブラウザによって、伝播の先やその途中でどんな振る舞いが実装されているか
分からないから、伝播中止は可能な限り避けた方が好ましいという気がする。
>>608 そうやっておまえみたいな奴の言い掛かりレスを野放しにするから、つけ上がるんだろ。
仕様云々は、はっきりさせないといけないんだ。
ここは「WEB開発者専用の」Javascript質問用スレッドではありませんよ。
皆仕事で何らかの仕様に基づいて開発してる訳じゃない。
行き当たりばったりで作ってる奴もいるだろう。
おまえの価値観・基準を、人に押し付けるな。
>>607 負ける画家痴ってことさ!
一、ブレクラに打ち勝つ精神力を持つこと
一、辛抱して優れたJavaScriptを学ぶこと
一、感謝と復讐を忘れないこと
614 :
Name_Not_Found :2005/06/29(水) 11:08:10 ID:LYGvVEnS
質問です。 本文が↓で <html><body> <form name="takashi"> <input name="kaoru"> <body></html> javascriptで var form_name ="takashi"; var input_name ="kaoru"; document.form_name.input_name.value; とやるとドキュメントじゃねえってエラーになります。 引数として名前だけを渡したいのですが、どうすればよいのでしょうか?
>>614 さすがにそれじゃかまってもらえないだろ。もっと良い餌で釣れ。
>>612 どちらも、質問者の事を考えての意見だと思うが何をアツくなっているんだ?
あえて言うなら、
「オマイは見込み無いから、ソースを貼れというアプローチもありだと思う。」
質問者のレベルに応じて対応できれば一番よいのだけどね〜
掲示板じゃ難しいか。
617 :
614 :2005/06/29(水) 11:44:32 ID:LYGvVEnS
仕様が読めない何もできない奴のために「手取り足取りスレ」
があるんじゃないの。そう合意したと思っていたが。そして
こちらに回答者が多くて向こうに少ないのは手取り足取りして
やりたくはない回答者が多いから。だからといってここを
手取り足取りにしろというのは無茶苦茶だな。
>>614 ほんっっとに、その日本語では解析不能だ。
>>2 と
>>3 を読めば
いいことがあるかも知れない。
619 :
577 :2005/06/29(水) 11:46:04 ID:???
>>611 (゚Д゚)
(゚Д゚) ネ申!
まだ読んでない資料が腐るほどあることを思い知った。orz
こんな脳貧の漏れに付き合ってくれてありがとう・・・>all
だが低レベルな論争はよそでやれ
どうだ、ここは
>>612 が
>>614 のためにソース貼って
やるってのは。どんなソース貼るか楽しみにしてるよ。
洩れはもうちょっと質問内容が理解できるまではパスだね。
>>614 のやりたいことはこうだろ。
document.forms[form_name].elements[input_name].value
FAQ
>>3 を読んでから来いこのバカタレ! 2度とくるな。
低レベルなヤシは回答しつつ罵倒しておくという
>>621 の
やり方がいいかも知れんね。それで謙虚になれないヤシは
それまでということで。
623 :
614 :2005/06/29(水) 11:57:49 ID:LYGvVEnS
>>621 ああ!!神様〜〜〜♪
スキスキスキ〜 (´3)ぶちゅううゥ〜〜♪
ありがとうございます。ごめんなさい( ;A;)
もっと勉強します・・・・・ orz
>>623 野郎だったらヌッコロしてることろだが脳内変換しておくことにする。
>>622 謙虚になれないヤシを煽ったりする厨がウザくならないかなぁ
漏れはマターリをオススメしたいが
>>618 >仕様が読めない何もできない奴のために「手取り足取りスレ」
があるんじゃないの。
これは同意です。
私の言葉が足りなかったですね。
627 :
614 :2005/06/29(水) 12:11:59 ID:LYGvVEnS
>>624 あ・・・・ FAQに書いてありますね・・・
ホントにごめんなさい・・・・
628 :
Chan Aixian :2005/06/29(水) 13:01:40 ID:o5iHzpki
大家好: 這箇板在台湾也是非常有名的。但是我説日語説得不好、 我可以問蛇婆素苦力不的問題用漢語?我這児想考多年 来的諸問題。 多謝。
大 這 我 来 多 (訳) 大志を抱いて我は日本に来た ニホンジン相手に強制夜這いやってる同士が多いアルね (゚д゚)ハァ?
また変なのが沸いてるなぁ。 次の正常な患者さんマダー?
(訳)つづき で、わかったことは、ニホンジンは発射の精量が多く、台湾まで飛ばしたヤシもいる、と。 (゚д゚)
訳がスゲー嘘臭ぇ 英語ならまだしも厨獄語なんて使わないからなぁ ホントにそう書いてあんの?
共産国でもJavaScriptのコードは共通なのね グローバルあるネw
反日書き込み反対。自分の国でやってくれ。
「蛇婆素苦力不的=javascript」と仮定して、
>>628 をexciteで翻訳してみた。
>皆さん、こんにちは:
>この板は台湾にある?とても有名だ。しかし私?日本語?よくなくて、
>にならなければならない私はjavascript問題に中国語を使うことを聞く
>ことができる?私これ?長年を試験したい?の諸問題。
>ありがとう。
別に悪いことは書いてない模様だが、何が言いたいのかもわからん……。
要するに中国語で質問しても大丈夫か?ってことかな 誰か使える奴いないの?
スクリプト自体が中国語なら無理だが、アルファベットだし大丈夫だろ。 あとは翻訳頼み。 つーか質問者は英語できないの? 中学程度のカタコト英語くらいならわかると思うがね。お互い。
>>628 漢語で質問して良いよ。漢字読めば大体判るから。まぁ"JavaScript"とかは英語で書いて欲しいけど。
さっさと質問書いてくれた方が望ましい。
いきなりで罵倒されるのを怖がってんじゃない。2ch道場方式は台湾でも有名のようだ。 向こうの国会も刃物・ビンタあたり前のバトルが凄そうだが。
一部漢字を書き換えてexcite翻訳 大家好 這箇板在台湾也是非常有名的。 但是我説(言八兄)日語説(言八兄)得不好、 我可以問javascript的問題用漢語? 我這兒想考多年來的諸問題。 多謝。 皆さん、こんにちは この板は台湾にある?とても有名だ。 しかし私は日本語を話して言うのがよくなくて、 私はjavascriptの問題に中国語を使うことを聞くことができる? 私のここは数年来の諸問題を試験したい。 ありがとう。
>>618 だからオマイの脳内で何が合意されたか知らんが、
それを他人に押し付けるなと言ってるんだ。
「手取り足取りスレ」は、本気で文字通りのスレとして立てたわけ?
流れを見てると、初心者ウザがるやつらが、
そいつを放置して吊るし上げるスレとして立てたものと映っていたのだが・・・
俺がいった「仕様」はプロジェクト(コンテンツ)の仕様のこと。
仕事でやってない奴は、こういう面白いことが出来るんだ、と
あちこちフラフラしながら作っている事が多いし、
Javascriptもそれほど厳密じゃないから、かなりの程度許容されるはず。
さらに世の中でJavascript扱ってる奴の大半はこっちだ。
(HP・ブログ等々でちょっとだけ弄くる奴とか)
そいつらを無碍に扱えば、以前のように閑散とするのは目に見えてる。
こういうやつらは、自分のやりたい漠然としたものがわかってないし、
バグ取りのやり方すら知らないのでは?
>>618 のように、何でもかんでもヒステリックに一蹴するより、
>>607 みたくチュートリアルなど一読させるのにうまく誘導した方がいいと思う。
確かにここんとこ超初心者+基地害が多いが、名無しスレなぞ玉石混合なのだから、
石が増えてきたからといって、厳しく排除すれば玉も逃げてくよ。
まともなレスだけにしたいとか欲を掻くなということ。
>>642 手取り足取りスレの位置づけについてはここの複数の常連が
そのような住み分けだと考えている。藻前一人が反対しても
ああそうですかってことだ。
このスレは少なくとも20レス以上に渡って初心者に厳しく
やっていて、それでこういう風に発展している実績がある。
だから今更それを変えるのは反対だ。藻前の脳内証拠と
実績とどっちが重みがあるかも分からんのか。終了。
だいたい何十レスにも渡って維持されてきたテンプレの基本的な 趣旨に反対してるっていう自覚がないんだよな。自分が感じた ことは正しいとしか思えないヤシなんだろう。
名古屋のラジオCMで 「玉だ!玉だ!タマタマだ!」 というCMは下品なので辞めてホスイ。
>>643 朝早くからゴクロウサマw
君はここをねぐらにしてるんだね。
でもここは君のスレじゃないんだ。そこは分かってくれるよね。
君の意に反した事だって書かれるんだ。分かるよね?
まあどういう実績が脳内で作り出されてるか知らんが
オマイが運営者じゃないんだから、実績云々は関係ないのでは?
オマエモナー。 もちろん洩れは運営者じゃないさ。だからここに何十スレ 書き込んでいるヤシ全体のことを言ってるの。
ま、テンプレ変えたいのなら新テンプレ案貼ってみ。 それで賛同が多ければ変えられるだろ。無問題。 英文問題でもあれだけ抵抗があった後だけどねー。
>>644 「テンプレの基本的な趣旨」には反対はしてないが、
なにもわからん奴に厳しく言っても無駄。
うまく誘導してやれ。
>>488 みたいに誘導を無視すれば厳しく逝けばいい。
>>649 それには賛成だな。どういう風にやるかね?決まった誘導文面を
用意しておくとか。
「あなたの質問は
>>2 と
>>3 を読めば解決すると思われます。
ご検討の上、まだ問題が解決しない場合は、そこの注意書きを
守った上で再度ご質問ください。」
すげー皮肉っぽいが ^_^;
651 :
Name_Not_Found :2005/06/30(木) 09:58:19 ID:SsHqgOSU
正規表現のサンプル置いてあるサイトありますか? ぐぐったんですがこれといったサイトがないんですよ・・・・
うД`)朝早いなもまいら テンプレ云々とかはjsと関係ないから別で話せ。 玉石混合とはよく言ったものだが 大半の玉はこの議論見て呆れている 石どもは大人しく質問だけしる! 下らん会話でスレ消費すな
654 :
Name_Not_Found :2005/06/30(木) 12:26:48 ID:mCsQ2CZL
数年前、JavaScriptは大抵のことができるが、円だけは描けない、と言われました。 今は円を描けるようになったのでしょうか。ならば、そのスクリプトをお願いします。
document.write("円");
>>654 いくつか方法がある。
(1)円の画像を用意し、縦横サイズを指定して活用。
(2)沢山の小さい四角(四角が嫌なら丸画像)を位置指定して円形に並べる。
(3)SVG(Gecko系)またはVML(IE)で描く。
丸投げスレではないので誰かに書いてくれというのは我儘。終了。
先に言われた畜生欝だorz 円だけは描けない、と言われました。 と言ったヤシはきっと「グラフィカルな操作はjsで実装されていない」ってことを言いたかったんだろ。 言葉の裏を読めない&新しい技術に興味を持たず他人に聞きまくるという姿勢はどうかと思う 改善しる
>>657 の (2)。ただし半ばブラクラ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function circle(x, y, r, col) {
var d = document.createElement('div'); d.style.backgroundColor = col;
d.style.position = 'absolute'; d.style.width = d.style.height = '2px';
var len = 2 * Math.PI * r, ratio = 2 * Math.PI / len;
for(var i = 0; i < len; ++i) {
var d1 = d.cloneNode(false); document.body.appendChild(d1);
d1.style.left = Math.floor(x + r * Math.cos(i * ratio)) + 'px';
d1.style.top = Math.floor(y + r * Math.sin(i * ratio)) + 'px';
}
}
</script>
</head><body onload="circle(320,320,300,'pink')"></body></html>
>>661 確かにO8でSVGの表示は問題なくできるね。なんだが、JSと組み
合わせようとするとなんかおかしい… XHTML+SVGでXHTML側に
script入れてみたけどJSが動いてる気がしない… alert()も
駄目だし。SVGがないときは普通に動くのだが…
>>642 手とり足とりスレを立てたのはオレです。
棲み分け用にですよ、あのスレは。
頑張ろうとするヤツは好きだけど、そうじゃないヤツもいるのはわかる。
後者は「グダグダ言わずに正解ソースだけ早く出せよ、このオタクども!」って
感じでムカツクことがあるのだけど、質問レスの半分くらいがそうなので、
需要はある、ということでたてました。あと、手とりスレの
>>89 あたりにもホンネが。
>>650 「あなたの質問は
>>2 と
>>3 を読めば解決すると思われます。
良く読んで、それでも問題が解決しない場合は、
自分でやったことと、わからない点を添えて、再度質問してみてください。」 てな感じでどうだろうかね。
jsは言語仕様だけだからな。「描く」というのとはそもそも無関係。
円を描けるかどうかはプラットフォームが円を描くようなオブジェクトを実装してるかどうかによる。
そ言ういう意味ではjsだけでは円を描けないというのはまあ合ってるな。
>>660 の例もhtmlレンダリングエンジンとういプラットフォームがあるからこそできるわけだしね。
じゃーーもーーグチグチ言うんだったら、テンプレの 1 にでもそう書いて誘導すればいいんじゃないのかね?
>>665 そんなこと言ったらWeb製作板じゃなくなるわな。理屈は
そうでも気分は分かるじゃん。そうだ、
(4)「○」という文字をでっかいポイントサイズで使う。
まだ早いよ
>>650 もう少し2chぽく。
[基本的なことが分かってなさそう]
「まず
>>2-3 を読め。
オマイの質問は、
>>2-3 の項目のどれかで十分解決するはず。
よく読んでも問題が解決しないなら、その時もう1度質問シレ!!」
「オマイはここで質問する前に、
>>8 にチュートリアルがたくさんあるから
それ読んでから出直せ」
[すでに何回もガイシュツ]
「その話題飽きた。すでに何回もガイシュツ
>>6 に一括サイトあるだろ?そこで検索かけられるから調べてみろ」
[やりたいことが分からない]
「何をやりたいのかさっぱり分からん。
うまく動かんなら「コード・エラー箇所」、(
>>2 の2)
日本語が得意でないなら、もう一度何がやりたいのか心の中で整理してから
要点をはっきりさせて分かり易く書き直せ。」
>>668 まだ早いし、誰も手とりスレを天婦羅に入れることに同意してないのだが。
この前も流れたじゃん。
誰かから「勝手にテンプレ代えるな」とか言われそう。
もちろん反対があれば流れるさ。で、反対なヤシは?
[自分の立てた失敗スレを立てなおしたいようだ]
「手とりスレは、まともな丸投げに手とり足とりしてから話題に上げろ。
そんな失敗スレの名をいちいち出すな」
これは
>>668 に使えそうだっと
要するになんなの、トウシロウが来るのが嫌なの、それに答えるのが嫌なの? どんな策をこうじてもトウシロウはアホな答えを求めて顔を出すだろうし、ド 素人に答えるのが嫌なら黙っていればいいのとちがうの?初歩的で間抜けな質 問には、他の奇特な回答者がいくらでも丁寧に教えてくれると思うし。 いろいろある方が、実は、混成学級みたいに教育的に優れていると思うけどな あ。ま、気持ちはわかるんやけどな、でも、うまいやり方やないなおもた。 あ、許してや、関係ないのやけど傍観しててちょっとちゃうなおもうたんで。 もうかかへん。
[大阪弁で偽装しようとしてる]
「あれあれ、途中から大阪弁に変わりましたけど、あなたはどちらの方?」
これは
>>674 に使えそうだっと。
中にはそういう香具師はいるよ。 でも最近増えたウザイ「トウシロウ」にみんな飽き飽きしてるのは事実。 まま、ここらで次の質問どうでしょう? 質問スレなんで1つお願いします。
677 :
670 :2005/06/30(木) 16:47:24 ID:???
質問待ちの回答者もウザイ。
Sleipnir2 アルファ版キタ━━━ testに篭もるのでヨロシクw
ニル2よりie7リリースの方が恐怖だけどな。 天麩羅はスルーで次の質問行こうぜ
>>674 > 混成学級みたいに教育的に優れている
本当に優れているのなら、入学試験はみんなしないとおもった。
ま、今までやって来たようにやればいいんじゃない?別に問題ない じゃん。(そういうのが好みじゃない奴がいるというだけで。)
684 :
526 :2005/07/01(金) 12:21:05 ID:???
流れに逆流してカキコ javascriptを勉強しなおしてきました。 確かに勉強したあとに質問を見るとアフォなつくりでした。 恥ずかしい限りです。あれからonkeydownの働きを復習して改良したら とてつもなく簡単に動いてくれました。 教えていただきありがとうございますた。 もっと自己解決できるちからをつけたいとおもいますorz
また閑散としちゃったね。
<input type="button" value="登録モード" onmouseup="alert('登録モードだよ')"> これ普通なら、動くと思うんだけど この要素の次の兄弟要素との間にDOMツリーをinsertBeforeしたんだけど反応しないぞ。 </input>付けたら正常に戻ったけど、普通<input>って終タグいらないよね? ただの素朴な疑問です(微妙にスレ違いか)
>>687 <input id="X" ..>
○ document.getElementById("X").parentNode.insertBefore
× document.getElementById("X").insertBefore
どうせこういう類の失敗だろうと思う。
いい方が悪かったかな? >この要素の次の兄弟要素との間にDOMツリーをinsertBeforeしたんだけど反応しないぞ。 この要素の次の兄弟要素との間にDOMツリーをinsertBeforeしているんだけど (ここまではレンダリングまで正常) 描写後上記inputタグをクリックしても指定アラートがでない。 (他サンプルでJavascriptなしで、描写させると普通にアラート出る(当然だが)) で対処として終タグつけたらアラートが出た。つまり求めていた処理が出来たということ。 ただ、素朴な疑問として<input>って確か終タグ入らんかったよね。DOMの時は 省略可能な終タグまで厳密に全部付けなきゃいけないのかな?とおもったから それを聞いてるんだけど・・・
ソースが貼れない(典型例が作れない)ヤシはスルー。
つ〜か
>>688-689 はいつもそうだけど、何も読んでないよね。
なんかinsertBeforeだけに食いついて適当に書いてるとしか思えない。
大体id属性なぞ一言も触れてないし、DOM自体のことを聞いてるわけでないのですよ?
純粋にHTMLのことだというのなら<input>に閉じタグはいらないとも。 なんならHTMLスレに逝ってみれ。じゃあなぜヘンなのかというと、 そりゃ質問者のやってることがおかしいという可能性が大なんだな。 でもソース貼る気がないんだからそれ以上探求しようがない。
>>693 アホだこいつ....今から些細な質問まですべてソースを要求する気か?
大体
>>690 で状況分かるだろ?
>>693 はまず普通の読解能力身につけたらどうだ?
まあ、ただの煽りなんで君はスルーね。
他の方どーぞ。
じゃスルーで。少なくとも
>>2 に従ってないしな。バイバイ。
そもそも質問者は何を求めているんだろうか。「漏れも確かに inputに閉じタグがないと駄目だった」とかいう発言を求めている? そんなヤシがここに突然現れるわけがないよな… ジサクジエン以外には。
流れを作りたかったんでないの? 笑点の円楽さんだって、一発目のネタに対しては、 後の流れを作る為に甘いもんだよ。
流れを作りたかったんでないの? 笑点の円楽さんだって、一発目のネタに対しては、 後の流れを作る為に甘いもんだよ。
二重書き込みスマソ orz
>質問者のやってることがおかしいという可能性が大なんだな。
回答者に文章の理解力がないのに
>>2 に則ってないからスルーとかカワイソウ・・
ちゃんと反応するよ。再現できないんだけど、他何か条件ないの?
function init(){
document.getElementsByTagName('body')[0].insertBefore(document.createElement("br"),document.getElementsByTagName('input')[0].nextSibling);
}
<!--BODY以下-->
<body onload="init()">
<input type="button" value="登録モード" onmouseup="alert('登録モードだよ')">
<div>DIVtag</div>
</body>
ほら再現しないだろ。全体から削る時に何かエラー条件になるものを 落してしてしまってるんだよ。 回答者に文章力?掲示板なんだから読んだら誰にでも分かる文章が 書けないなら書き込んだらいけないのさ。
>>699 山田くん、座布団 全部もって行きなさい。
という事で、次の方どうぞ〜。
>>701 ワロタ
じゃあ条件を満たしてるオマイは書きこむな。
ん?
>>703 は
>>701 の内容が分かったんだろ?いいじゃん。
そもそも回答者は「ホレ」と言ってあとはJSコード書ければいいのさ。
ホレてます。
>>692 おまえがよく読め。分からないことがあるのに生意気言ってないで素直に聞け。
>>689 じゃ言いたい事が全く伝わらないな。間違った例示だから。
つまり、
>>706 はわけわからんやつ相手にとんでもない暴言だった。
空要素の終了タグが間違って書いてあっても未知の要素と見なすIEの仕様を知らずに、
lengthで参照して onmouseup=function か attachEvent していたら、当然、
変なことになる。</input>のあるなしで違うわけだから、これを疑うのは当然だろう。
IE専で書いてみた。
<p id="P0"><input type="button" id="I0" value="0"></p>
<p id="P1"><input type="button" id="I1" value="1"></input></p>
P0.insertBefore( document.createElement('span'), I0.nextSibling );
P1.insertBefore( document.createElement('span'), I1.nextSibling );
alert( P0.childNodes[ P0.childNodes.length - 2 ] == I0 ); // true
alert( P1.childNodes[ P1.childNodes.length - 2 ] == I1 ); // false
>>687 は下手な推理を眺めてないで、さっさとソース出せよ。
もう
>>687 のことは構わないで逃げて!
って読んだ七月いっぴの23時前
>>707 空要素の終了タグが書いてあるのはHTML的には何ら間違いでは
ないと思うんだけど違う?
質問です evalを使って、サーバから送られてきたJavaScriptを実行するプログラムを作っているのですが、 たまにエラーを引き起こすJavaScriptが生成されることがあります。 そのときは安全に無視して次の動作を進めたいのですが、エラーが起こっても それをなかったことにして次の処理に進める方法はありませんか?
>>711 キミはJavaScriptの構文を一通りチェックしたことすらないのかね?
try文というのがそれに相当すると思うが。あとは自分でやれ。
>>711 eval した内容が想定した型・範囲に収まっているかどうか逐次チェックする
プログラミングの基本
714 :
687 :2005/07/02(土) 07:29:21 ID:???
>>707 確かに使ってるのはIE6です。
「空要素の終了タグが間違って書いてあっても未知の要素と見なすIEの仕様」
というのがそれっぽいですね。「次の兄弟要素」がpタグで、他の処理の都合上
付けておいて要らなくなっても取るのを忘れてた「Pタグの終タグ」付けてるんですよ。
で、
>>700 試してみたら確かにエラーが出ないんですよ。
ついでに本ソースで</input>取ってみてたら、これも通るんですよ??
???
結局、「描写後上記inputタグをクリックしても指定アラートがでない。 」という症状を
改めて確認できませんでした。(症状が出た時は1〜2回F5しても変わらなかったけど・・・)
なんでしょうね。他にエラーがあったのか、「未知の要素と見なすIEの仕様」かなにかで
処理が不安定で出来なかったのか、その時かなり埋めこんであった他のデバックアラートと
間違えてエラーのアラート消してたので描写はされたが処理は止まっていたとか・・・?
色々お騒がせしました。今のところは正常なのでこれ以上つっこみません。
コードは、どこが怪しいかが分かればうまく編集して出しますが、こういう状況なんで
全部載せることになってしまい、1000行越えてるし、まああまり大げさにする
つもりもないんで晒すのは辞めときます。該当するっぽい箇所は
>>700 のコードと同じような仕組みです。(ただ他の処理に関連して変数・関数を
いっぱい介してるんで、そこらへんが怪しいといわれれば怪しいけど)
いろいろありがとう。
そして
>>708 はまだ粘着してるの?
715 :
687 :2005/07/02(土) 07:53:05 ID:???
もう1ついいですかね?
CSSスレでこっちへ誘導されました。
http://pc8.2ch.net/test/read.cgi/hp/1119682328/215-225 styleタグに.class{hoge:piyo}をDOMで動的に追加したいんですが、
どうやったらいいですか?
前のほうのスレで.class{hoge:piyo}をスクリプトでそのまま書いても動かないような
ことが話題に上がった気がしたので、何か特別な指定方法があるのではと思いました。
でも予め<style>内に書いておいてclassName (IE)の値を変更したり、
createStyleSheet('hoge.css')でCSSファイルから取ったりとかの方法しか見当たりません。
DOMで<script>内に.class{hoge:piyo}を直接埋めこむ方法を教えてください。
>>714 だからね、バグ再現する最小限のソースを作ってみるっていう
ことはバグ取りの基本なんだよ。原因が分からなくても取れる
こともあるしな(ry そのための
>>2 だろ。
>>715 それは
>>305 にあるのとはどう違うんだ?現スレすら
一通り目を通さずに質問してるってことはないだろうな?
>>716 いや、こいつこっちに誘導したのオレなんだけど。
どうやら要素にアクセスしてstyleプロパティをごにょごにょするんではなくて、
style要素の中身を足したり引いたりしてみたい模様。
で、スタイル要素の子ノードはhtml的にはただのtextNodeじゃないか調べてみれ、
って言ったんだけどなあ。
718 :
717 :2005/07/02(土) 08:54:21 ID:???
んで、style要素の子ノードが、cssの書式にマッチしているか否かにかかわらず、
増えたり減ったりした場合に再レンダリングするUAがあるかどうか。
もし主立ったUAでうまくいくのなら、そこそこ使い道もあるかもしれないので、
>>715 はいろいろ試して、報告してくれるとみんなのためにもなるので
がんがれ。
>>717-718 えーと、
>>305 はstyle要素の中身を足すのと同じなんだが。
まあともかく、IEもGeckoもこういう操作した瞬間に反映されるよ。
ご心配なく。
>>715 がやりたいことが
>>305 と違うのだったら
分かる日本語でやりたいことを正確に書いてくれよな。本題以外の
ことでもめるのはうんざりなんでね。
720 :
Name_Not_Found :2005/07/02(土) 09:19:20 ID:MT+s90/9
質問です。 <span id="tx1" style="display:none">Test-String</span> という文字列指定をして、これを出現させる場合、 tx1.style.display = '' というSyntaxでも有効な理由がわかりません。通常はblock指定で すが、空文でも出現する仕様も見当たりませんでした。正しくな い構文なのだとは思いますが、ご教示ください。
721 :
687 :2005/07/02(土) 09:42:50 ID:???
>>719 >>305 完全に見落としてました。それでいけそうです。
要は
>style要素の中身を足すのと同じなんだが
こういうことなのですね。
難しく考えてました。
しかもdocument.createStyleSheet(); で空のスタイルシートも作れちゃうんですね。
ホントお騒がせマンでした。
>>720 正しくない(規格/標準では動作が定められていない)操作をしたとき
何が起こるかは「そのテストしたブラウザがたまたまそいうう風に
作られていた」ことで決まる。そして次のバージョンでは全然別の
ことが起こるかも知れない。もちろん、別のブラウザでも全く違う
ことが起きるだろう。単にそれだけだ。理由なんかないね。
>>720 知らんが、勝手にデフォルト値に扱われるんじゃないの?
だいたい display にしたって inline もあるし list-item や table もあるし、block だけじゃないしな。
>>721 ,719,305
ちょっとどうやってやるんだか忘れたんだけど、
>>305 とは別の方法で、JSから追加する方法なかったっけ?
なんか URL に入れるのと似たようなやり方で…。
検索の仕方もワカランノダガ… orz
████
>>712 try-catchじゃ無理だろ?
try{ vjq;e,.vqev;q }
catch(e) { alert("error"); }
うまく動かないように見えるんだけど
>>725 try{ eval("vjq;e,.vqev;q"); }
catch(e) { alert("error"); }
@import されたCSSのhrefを列挙する簡単な方法を教えて下さい。 再帰呼出しで関数を作ったら、「エラー: この操作を完了するのに十分な記憶領域がありません。」で停まってしまいました。
>>723 偉そうに語りたくて仕方無いみたいだが、何の情報もない放言は
やめてくれ。「空文字列を入れるとデフォルトになる」「デフォルト
は'block'である」という仕様の存在を確かめたのならそれは価値がある
んだけど「知らんけど」て喪前。スタイルシートオブジェクトの操作方法
だって何通りもあるよ。しかし検索もワカランて一体… -_-#
>>727 とりあえず @import のあるCSS記述例を貼ってくれ。我々はJSのプロだが
CSSはそんなに明るくないんで、質問者にサンプル貰うのが確実。
>>726 うわ、evalって例外出したんだ、知らなかった。
711じゃないけどありがとう
ま、プロにも色々あるが、2ちゃんねるのスレの中では一番詳しい 常連がいるものと自負しているよ。反対ならもっとすごいスレ貼ってみ。
>>723 ,728
でも、もともと 任意の element.style.display の値は空だろ?
element.currentStyle とか getComputedStyle() 〜 とかの display値はあるけど。
普通のことなのでわ。
>>727 document.styleSheets の中に入ってない?
「初期状態で参照したとき空である」からといって「''を入れると初期状態 になる」とは決められないと思うのだが。それが書かれている仕様があれば ぜひ教えて欲しい。勉強になる。
仕様? ハァ?? バカのひとつ覚えみてーにしょーもねーことぐだぐだ言いやがって。 知りたきゃ自分で探せばいいじゃねーかコノヤロー!
いや、探しているとも。DOM2 CSS Fundamental Interfaceの removePropertyを使えば指定を削除できることまでは分かった。 しかし質問されている、Extended Interfaceで空文字列を設定すると 削除に相当するとは書かれていない(と思う)。 まあ、喪前が仕様の英語読めないのは分かったから黙っていてくれ。 英語と仕様が出て来るたびに荒れ狂うんじゃ迷惑杉だろ。
738 :
Name_Not_Found :2005/07/02(土) 12:34:13 ID:KIuhrcR1
すいません、質問なんですが・・・ INPUTをJavaScriptでreadonlyにしたいのですが、 document.forms[0].elements['answer1'].readonly = true; では、うまくいかない。どう書けばよいですか。 disabledでない場合です。よろしくお願いします。
>>738 あのね、「readonly」ではなく「readOnly」、分かる?
冗談だったらもっとほのぼのとして後味のいいものを頼むよ。
>>736 かんじわるいねー。
あと、仕様でシャレのつもりなら、「しょーもねー」じゃなくて、「しようもねー」
だと思うのですが。そこまでのアタマあるか?
>>742 おまいは頭はあるかもしれんがセンスがないな。
>>736 誰もエンタの神様とか見てないらしいなw
>734 @importされたCSSの中にさらに@importのあるヤクザなCSSを調べようとしています。3段ぐらいでエラーがでました。
>>737 空文字列の代入については、どこにも定義が無いね。
element.styleの中身はインラインstyle属性で明示的に指定された値を持ってるだけで、何も書いてないなら空。なので、空の代入はstyle属性に書かれていない状態ということにしてるのかいな。
その結果についてはCSSの話になるけど、
720のように、style属性より優先度の低い中で最も優先度の高いスタイルが適用される。存在しなければ初期値。(720はblockだと言ってるが、あの場合inlineだろ)
>729 c1.css @import(../c2.css) body{〜うんぬん} c2.css @import(../c3.css) hr{〜うんぬん}
@import url("〜"); @import url(〜); @import "〜"; とかでも
>>747-748 とりあえずGeckoでは問題なくimportの入れ子が追跡できた。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<link id="l0" rel="stylesheet" href="c1.css">
<script type="text/javascript">
var result = "";
function test() {
show('.', document.styleSheets[0]);
document.getElementById('d0').innerHTML = result;
}
function show(pre, sheet) {
result += pre + '(' + sheet.href + ')<br>';
for(var a = sheet.cssRules, i = 0; i < a.length; ++i) {
result += pre + String(a[i].cssText) + '<br>';
if(a[i].type == 3) { show(pre + '.', a[i].styleSheet); }
}
}
</script>
</head><body><h1>Test</h1><button onclick="test()">Test</button>
<div id="d0"></div></body></html>
問題はIEで、IEでは@importルールがどこにあって何を指しているのか
どうやって知ればいいのか分からない… 非標準な上、MSドキュメントが
分かりにくすぎ。
どうか
>>736 にご慈悲をお与えください。
思慮に欠けた者の背には杖がある。知恵のある者は知識をたくわえ、
愚か者の口は滅びに近い。
752 :
Name_Not_Found :2005/07/02(土) 20:03:15 ID:fTnMme+b
はじめまして。 init()という関数を外部ファイル(myscript.js)に書き、 HTML内で <body onload="init()">で呼び出しているのですが "オブジェクトを指定してください。"というエラーが発生 します。 他の関数は、正常に呼び出されています。 onloadで呼び出される関数は、外部ファイルに記入できない など制約があるのでしょうか? 尚、当方の環境はWin2000, IE6です。 その関数をHTMLに直接書く以外の回避策等あれば、ご教授お願い致します。
>>752 最小限のサンプルを作って貼ってみれ。貼れないなら終了だな。
<script src="..."></script>は、指定したファイルの読み込みが
完全に終わるまで先に進まないから、そこより後で関数が未定義
ということは普通ない。
init() 内からのソースに不備がある確率 99.998% ……
ちゃんとエラーの行番号まで貼らせれば一発なのに。
>749 そのコードは再帰呼出しを使っているのでやはり… IEで動くように直したが駄目でした。深さが3を越えると死にまする。 リカーシブコールを使わないようにして頑張って見ます。 何はともあれありがとうございました。
>>756 うーん?IEで3レベルしか呼べないなんて嘘っぽい。もっと
いくつも呼んだことあるよ。なんなら再帰をやめてスタックで
やってみようか?ところでIEでどうやって@importを追跡する
のかは教えて欲しいなあ。
JavaScriptなら、菊までもない。ソースを見ればいいだろ。解答がそこにある。 いいから、もう寝ろよ。あしたまたない頭絞って考えろ。
初めまして、よろしくお願いします。 google等で色々探して見たのですが、見つからず、質問する事にしました。 (・ω・)同僚の女の子(惚れてる)にいい顔したいのです助けてください。 せっかく珍しく頼られたのですが自分にはJavaScriptの知識が orz カレントフォルダとその下位フォルダ内にある全ての画像ファイル(JPG.GIF等)を一覧表示する スクリプトを教えてもらえないでしょうか? 現在はファイル名を連番にして表示等しているのですが、 それを任意のファイル名でいけるようにしたいのです。 用途はWEB上ではなく社内LANの共有フォルダでそれをしたいのです。 どうも彼女を狙ってる人が他にもいるようで1歩でもリードしたいっすorz
>>760 「JavaScript男」いつ映画化されますか?
ありえないに1万ペリカ。 var list =new array(); //この配列に必要なフォルダのパスをすべていれておく。 for(var i=0;i<list.length;i++){ if(list[i].match(/\s.(jpg|gif|オマイの好きな拡張子)$/){pickup_list.push();}} var t=document.createElement('table');document.body.appendChild(t); for(i=0;i<pickup_list.length/5+1;i++){ var tr=t.insertRow(); for(var j=0;j<5;j++){ var td=tr.insertCell(); if((i*5+j)<pickup_list.length){ var img=document.createElement('img'); img.setAttribute('src',pickup_list[i]); //他のwidth,height,border等々この方法で設定できる td.appendChild(img); td.appendChild(document.createTextNode(pickup_list[i].match(/\\[^\\]*$/));} i++;}} 自分のパソコンのカレントデレクトリ-から下デレクトリ-を調べるのがJavascript で出来るか知らんが、出来れば後はこういうことだ。 これでうまくいったら、笛等ぐらいは挿せていただけるのだろうか?
764 :
Name_Not_Found :2005/07/03(日) 08:41:01 ID:1zNCiSac
あら?下げそこなった 要は IEでは@importは3階層までしか読めません
>>764-765 いや、それは別にいいんだけどね。@importされているスタイルシート
(最大3レベル分として)の内容をJS側で取り出すにはどうするのかと。
Geckoでは仕様通り作ったら
>>749 でできたのだけどIEでは分からん。
JSの関数の再帰呼び出しがIEで3レベルしか呼べないってことはないよ。
>>758 それActiveXじゃないの。ActiveXだったら何でもできるよ。
>>760 HTTP じゃなくて、マイネットワークからたどれる共有フォルダだよね。
そもそも Web 制作じゃなくてプログラム板の方が適切な気がするけど。
Windows じゃなかったらごめんね。
JavaScript でやるよりも、拡張子で絞り込んでサムネイル表示できる
画像ビューアを彼女のコンピュータにインストールしてあげれば?
エクスプローラのフォルダのカスタマイズでスクリプトを組んでも
ある程度できるかもしれないけど、クライアント OS に依存するので
止めといた方がいいと思う。
>>760 // 名前が .gif .jpg .jpeg .png .bmp で終わるファイルを
// カレントフォルダ(コピペJSファイルのあるフォルダ)以下から抽出するには、
// findFiles( /\.(gif|jpe?g|png|bmp)$/i, '.');
// 結果は変数resultが参照する配列に入っている。
// 一応注意しておくが、テストは浅くて中身の少ないフォルダで。
// 当然、結果をファイルとして残すのだろうが、自分で書け。
// WSHが分からなければMSのドキュメントを読め。
// 専門的な質問はム板のWSHスレなどで聞け。
var fso = WScript.CreateObject( 'Scripting.FileSystemObject');
var result = new Array;
function findFiles (patternOfFilePath, folderPath) {
var folder = fso.GetFolder( folderPath);
iterateFiles( patternOfFilePath, new Enumerator( folder.Files));
iterateSubFolders( patternOfFilePath, new Enumerator( folder.SubFolders));
}
function iterateFiles (patternOfFilePath, it) {
var path;
for ( ; ! it.atEnd(); it.moveNext()) {
path = it.item().Path;
if (patternOfFilePath.test( path)) result[ result.length] = path;
}
}
function iterateSubFolders (patternOfFilePath, it) {
for ( ; ! it.atEnd(); it.moveNext())
findFiles( patternOfFilePath, it.item().Path);
}
>>760 >>768 に先を越されたけど、せっかく書いたので貼らせて。。orz
IE専で、セキュリティレベルを極端に下げれば、
以下の感じでファイル一覧を取得できる。
後は、
>>763 と、組み合わせれば。。
var list =new Array();
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fls = new Enumerator(fso.GetFolder("パス").Files);
for (;!fls.atEnd();fls.moveNext())list.push(fls.item());
alert(list);
ただし問題点は、多い。
・通常はセキュリティレベルを下げるの事は、よろしくないので、
特殊な目的や個人的に使う以外では、お勧めしない。
・ファイル数が大量にあると、半ばブラクラ。
・UNCパスとかで、テストしていないので、エラーになるかも。
・IEでしか動かない。
・ブラウザからのカレントフォルダって。
・サーバー側で処理した方がよいのでは?とも思う。
こんな感じでも良いのなら、WSH系のスレで聞いた方が解決する。
セキュリティレベルを極端に下げるってのは、
「スクリプトを実行しても安全だとマークされていないActiveX〜」
を有効にしたら動いたが、詳しくは自分で調べて。
>>769 >ブラウザからのカレントフォルダって
エクスプローラを2つ開いてドラッグドロップして
WScript.Arguments(0) ということじゃないかと。
ドラッグドロップで一覧表が作られる、と。
// つうか再帰ry
>>770 あー下位フォルダに関しては、触れてなかったねぇ。
回答としては、
>>768 の方が正確でないかな?
調べてる途中に
>>768 に気づいて悔しかったんだよ〜orz
>>769 は、参考程度に思ってくだせぇ。
773 :
760 :2005/07/03(日) 15:17:22 ID:???
おはようございます。寝すぎた
色々レスありがとうございます。
ざっと目を通して見ますた。抜けあったらすいません。
>>763 > これでうまくいったら、笛等ぐらいは挿せていただけるのだろうか?
絶対無理w気さくに喋る程度で昼休み飯とかすら誘えないorz
>>767 そのとおりです。HTTPじゃないです。
すみません。JavaScript 2ch 質問でぐぐったので。。
> JavaScript でやるよりも、拡張子で絞り込んでサムネイル表示できる
> 画像ビューアを彼女のコンピュータにインストールしてあげれば?
彼女はいろんな画像を同僚向けにイントラネット風に公開したいわけです。
ソフトを要れるとなるとそれらの人全員に要れないといけなく、そうなると
色々またややこしくなります(フリーソフト要れるにしても申請書かないといけないので)
>>768 WHSの存在は知ってるですが。。。ちょっと調べて見ます。
>>769 外(ネット)に繋がっているPCもあるのでセキュリティレベル下げるのは
ちょっと厳しいです。orz
>>772 ちょっと読んでみます。うちも文章力なくてすみません。
質問というかなんというかsage インタプリタ型のプログラムは著作権法の対象外とされている上 誰でも思いつきそうなソースを書いている癖に 著作権は俺にある勝手に持っていくなどこそこで盗用されたうんぬん とか言ってる一部のヤシについてここの方はどう思いますか。
>>774 : インタプリタ型のプログラムは著作権法の対象外とされている上
そんなの大嘘。でもそういう議論なら著作権スレへ行け。
776 :
760 :2005/07/03(日) 16:09:02 ID:???
今、
>>768 をコピペして書いてるのですが、うまく行きません。
iterateFiles()の中に document.write( path ); を挿れてみたのですが
ナニも表示されません
自分に圧倒的に知識が足りなく、ナニが間違ってるのかすら。。。
御助力くださいorz
>>776 //
>>768 に続けて次を追加コピペ。hoge.jsとして保存。
// エクスプローラを2つ開け。片方はhoge.jsが見えるように、
// もう片方は画像を全部知りたいフォルダが見えるように。
// 画像を全部知りたいフォルダをhoge.jsにドラッグドロップ。
// hoge.jsがあるエクスプローラに$で始まる長い名前の.htmlファイルが出来る。
function initialFolderPath () { try { return WScript.Arguments(0);
} catch (e) { return WScript.ScriptFullName.replace( /(\\|\/)[^\\\/]+$/, ''); }}
function toHTMLFile (folderPath) {
var ts = fso.CreateTextFile( WScript.ScriptFullName.replace( /[^\\\/]+$/, '')
+ fileNameFromCurrentFolderPath( folderPath));
ts.Write( ul_li_a()); ts.Close(); }
function fileNameFromCurrentFolderPath (folderPath) {
return folderPath.replace( /^(file:)?[^:]+:|[\\\/]+$/g, '')
.replace( /[\\\/]/g, '$') + '$' + (new Date).getTime() + '.html';}
function ul_li_a () {
var nosuch = '\u5728\u308A\u5F97\u306A\u3044\u6587\u5B57';
var hrefs = result.join( nosuch)
.replace( /&/g, '&') .replace( /\"/g, '"')
.replace( /</g, '<') .replace( />/g, '>').split( nosuch);
var i = 0;
return ( '<?xml version="1.0" encoding="Shift_JIS"?>\u000D\u000A'
+ '<ul xmlns="
http://www.w3.org/1999/xhtml ">\u000D\u000A<li><a href="">'
+ result.join( '</a></li>\u000D\u000A<li><a href="">')
+ '</a></li>\u000D\u000A</ul>'
).replace( /""/g, function () { return '"' + hrefs[ i++] + '"'; }); }
function doIt (patternOfFilePath) {
var folderPath = initialFolderPath();
findFiles( patternOfFilePath, folderPath); toHTMLFile( folderPath);}
doIt( /\.(?:gif|jpe?g|png|bmp)$/i);
それってWSHなんだろ。WSHスレへ逝くべきなんじゃないの。 もはやWeb製作じゃないというか。
>>777 展開されたので訂正。
> .replace( /&/g, '&') .replace( /\"/g, '"')
> .replace( /</g, '<') .replace( />/g, '>').split( nosuch);
↓
replace( /&/g, '&') .replace( /\"/g, '"')
.replace( /</g, '<') .replace( />/g, '>').split( nosuch);
>>760 はあれだろ、サムネイルを自動で作るのがほしいのではなくて自動で表示するのが
ほしいんだろ?
毎回、HTMLなりを修正するのが手間だから
>>778 まったくもってその通り。
なんか家の掃除さぼって丸々答えてしまったが、我ながらかなり気分悪い。
反省している。
ところで、XMLHTTP が厨な名前で最近流行っているが、
これ自体は、WSHでは以前から必要な時にはごく普通に使われていた。
だから、WSHであろうが何であろうが、アンテナを張っておくのは悪いことではないだろう。
>>777 ノーd先生に怒られますorz
>>778 これってJAVAScriptじゃできないのでしょうか、、、?
>>780 まさにそのとおりです。
>>782 だから言語はJavaScriptだけどブラウザで動かすんじゃないんだって。
ブラウザで動かす奴だったらセキュリティ最低にするしかないんで、
やめた方がいい。要するにWeb製作的には「JavaScriptではローカル
ファイルの中身は見られない」URIが完全に分かっている場合は普通に
表示させられるけど、今回みたいに名前を調べまくるのは駄目。
>>781 うん、アンテナはいいと思うんだけど、これはWSHですとかちゃんと
注記しつつやらないとスレ検索する人も間違ったりするんで。あと
XMLHTTPと違ってローカルファイル見まくりは今後ともあり得ないでしょ?
>>782 俺もノーdに怒られたw
>>760 君のやろうとしてる事はなんとなくわかるしここはJavaScriptの質問スレ
だけど、あくまでWEB製作板なわけですよ。
つまりここでは無理です他のスレあたってください
ってどこのスレだろ
>>777 訂正。
> + result.join( '</a></li>\u000D\u000A<li><a href="">')
↓
+ hrefs.join( '</a></li>\u000D\u000A<li><a href="">')
>>782 ==
>>760 なんだよな?
ノートンにおこられるって、もし勝手に設定いじれないなら出来ないよ。
言語以前にお前はPC初心者だろ。力が抜けてきた。
他の言語で
>>768 ,
>>777 ,
>>779 ,
>>785 を翻訳して使え。
とりあえず、findFiles( RegExp, String) の外観は、
Perl の File::Find の find( ref_sub, @(string) )
に似せてある。やる気があれば翻訳は難しくない。
で、二度と来るな。オレもこのスレ違いになってしまった話題を終了する。
ありがとうございます。 そっちに行って見ます。
\u000D\u000Aは\r\nじゃだめなんけぁ
>>788 迷惑かけてすいません。
別にPC初心者ってわけじゃないんですけどね・・・プログラムで飯食ってますし。
ただ、こっち関係さっぱりだったもので。。
(・ω・)お邪魔しました。ありがとうございました。
プログラムで飯食ってますし プログラムで飯食ってますし プログラムで飯食ってますし へぇ……
発展途上の物で、誤解が多そうなので。
>Ajax は、XMLHttpRequest の単なる別名なのでしょうか?
>違います。XMLHttpRequest は、Ajax という方法の単なる一部分に過ぎません。
>XMLHttpRequest は、サーバとの非同期的なやりとりを可能にするコンポーネントです。
>我々がこの記事全体で述べている総体的なアプローチとしての Ajax は、
>単に XMLHttpRequest のみでなく、CSS や DOM その他の技術に依存するものです。
参考:
http://antipop.gs/docs/translations/ajax.html 流行り物だろうけど、需要はあるんじゃないかな。
>>760---
>>793 お前らいい加減にしろよ。今回はどうした風の吹きま和紙だ?初心者のマジ質
には辛く当たるくせに、こんな野郎に30以上もリソースを老屁している。
おれはこいつが同僚の女とどうなろうと全く関心がないね。ここは、JavaScript
の質問スレだぞ。他行って議論してくれ。何の関係があるんだよ、このタコ。
なぜかというと、質問がブラウザのJavaScriptじゃないので皆 つっぱねる自信がないわけさ。(ry
>>794 今日は、みんな機嫌がよかっただけさ。
>おれはこいつが同僚の女とどうなろうと全く関心がないね。
↑実は、これに一番ひっかかっているのだろ?(プッ
でも、Web製作の線引きって、どこまでなんだろう。。
適したスレがあれば、そっちに誘導するのが、正と思うけどね。
てゆうか 見る側が エクスプローラの表示方法をサムネイル表示にするだけで用は足りるんじゃないの?
我儘なユーザーやデザイナ、、 ブラウザの特性を知らずに無茶な設計するダメ設計者 私の周りには、一杯いるな。。orz
799 :
Name_Not_Found :2005/07/03(日) 21:38:26 ID:8WJdNbNd
カレンダーを作ってます 西暦と月を指定すると最後の日を返すことを簡単に行いたいです いまはこの関数を使ってしています function getLastDay(y, m) { if (m == 1) { if (y%4 == 0) { if (y%100 == 0) { if (y%400) return 29 else return 28 } else return 29 } else return 28 } else if (m == 3 || m == 5 || m == 8 || m == 10) return 30 else return 31 } LastDay = getLastDay(2004, 1); もっと簡単になりませんか? これをするプロパティかメッソドか関数などが既に定義済みだったり するなら教えてください
メッソド
「Dateオブジェクトで年/月を指定してその月の日数を知る」
って結構面倒じゃないの?その月の1日のDateオブジェクトと
翌月の1日のDateオブジェクトを作ってgetTimeの差を求め、
1日のミリ秒数で割る? 分かりくそうだなあ、素直に
>>799 みたいなのの方がいいような来もする。
>>802 翌月の1日のDateオブジェクトを作って24時間引けばいいんじゃね
>>803 いいんじゃね、じゃなくて実際にコードを書いてみせてよ。結論はそ
こから自ずと明らかになるべし。ザッツ・アン・エンジニアじゃね。
>>803 なるほど、でも12月だと翌年1月を作ったりするわけか。うーむ。
function getLastDay(y, m) {
var daylen = 24*60*60*1000; // 24hr, 60min, 60sec, 1000msec
return new Date((m<11?new Date(y,m+1):new Date(y+1,0)).getTime()-daylen).getDate();
}
実際グーグルで上位に出てくるしなこのスレ
後プログラムなんてぴんからキリなんだから
>>760 がそれで飯食ってても
不思議じゃないでしょ
>>799 動いてるならそれでいいんじゃない?車輪の再発明って考え方もあるし
>>804 <html>
<head>
<title>翌月を計算</title>
<script type="text/javascript">
<!--
function calcNextMonth(obj){
var next_month = new Date(obj.elements["this_year"].value, obj.elements["this_month"].value, 1, 12, 0, 0);
alert(next_month.getFullYear() + "年 " + (next_month.getMonth() - 0 + 1) + "月");
}
//-->
</script> </head>
<body>
<form><input size="10" type="text" name="this_year">年 <input size="10" type="text" name="this_month">月 <input type="button" value="翌月は?" onclick="calcNextMonth(this.form)"></form>
</body>
</html>
>>793 日本人は、こういうブランド力に弱いから
説明に説得力もたす意味でも効果的。
ついで <html> <head> <title>月末は?</title> <script type="text/javascript"> <!-- function calcLastDate(obj){ var last_date = new Date(obj.elements["this_year"].value, obj.elements["this_month"].value, 1, -12, 0, 0); alert(last_date.getFullYear() + "年 " + (last_date.getMonth() - 0 + 1) + "月 " + last_date.getDate() + "日"); } //--> </script> </head> <body> <form><input size="10" type="text" name="this_year">年 <input size="10" type="text" name="this_month">月 <input type="button" value="月末は?" onclick="calcLastDate(this.form)"></form> </body> </html>
PHP で Database から幾つかエントリを引っ張ってくるページです。 例えば以下の様な構造の div 群があるとします。実際には div.item はいっぱいあります。 <form> <div class="item"> <input name="flag" value="1" /> </div> <div id="found"> <div class="item"> <input name="flag" value="0" /> </div> </div> </form> div.item をクリックすると、input->flag の value を反転(1なら0に、 0なら1に)するとします。と同時に div.item の背景色も変えます。 ページを読み込んだ時に、全部の div.item の背景色の設定を javascript でいっぺんにしたいんですが、どうすればいいですか?
>>810 そんなの
>>305 を応用すりゃまんまだろ。質問する前に現スレ
くらい読んだらどうなんだ。
812 :
810 :2005/07/04(月) 08:42:57 ID:???
でも800レスは全部読むには結構辛いとは思う。
だがあと100もすれば、また例の言い合いが始まって すぐに次のスレへ逝くだろう。
しかも今日は月曜。
月曜の挙動は以下の通り
>>103 ,535,539
心配せんでも水曜には次スレだよ、と予想してみる。
>>799 var d = new Date();
// Date オブジェクトにとって、7月31日 == 8月0日 である。
// これを利用する為に、月を 1だけ加算して来月にしたい。
// しかし、今日が 29, 30, 31日だった場合、
// 来月にもこの日付があるかどうか分からない。
// だから、d.setMonth( d.getMonth() + 1 ) する前に、
// 日付をどの月にも必ず存在する 1 から 28 のどれかにする。
d.setDate( 1);// 今月 1日
d.setMonth( d.getMonth() + 1 );// 来月 1日
d.setDate( 0);// 来月 0日
alert( d.getDate() );// 31 (7月31日 (8月0日))
Date オブジェクトを扱うポイントは、
日付なら (set|get)Date だけで事が済まないか、
分なら (set|get)Minutes だけで事が済まないか、と考えること、
そして、1000 * 60 * 60 * .. みたいな計算をしている時点で、
Date オブジェクトを利用できていないんじゃないかと疑うこと。
計算に悩むようなことは Date オブジェクトが知っている場合が少なくない。
こういう主旨の指摘は過去ログにおいても繰り返され続けている。
これでも十分速いが、
>>799 のような方法が最速。
ただ、引数に y, m としている
>>799 は感心しない。
関数内部で Date オブジェクトに問い合わせるよう作るべき。
引数を使うなら、その getLastDate に Date を渡すだけで
その Date の月の最終日が戻ってくるように。
818 :
799 :2005/07/04(月) 12:48:05 ID:???
もういいです 手伝ってくれてありがとうございました 自分で書いた799をこれからも使うことにします
>>818 もういいです、とはどういうことだ。そんな言い方があるか?これだ
けみんなが協力して考えてるのに。最低のことばだな。もう来るな。
>>819 1.釣りに嵌った。
2.嫌な相手に回答されて逆切れした。
3.言ってる事が質問者のレベル内容を越えていて、話が通じなかった。
4.すでに質問者が回答を得ており、このスレのレスポンスの遅さに不満を感じている。
まあ考えられるのはここら辺りか?ソース貼ってないからこれ以上回答しようがない。
>>2 (3)を読め。ソースが貼れない(典型例が作れない)ヤシはスルーw
と煽ってみる。
この手の質問は、学生か新人さんだろ? 悪意があれば、もっと他の書き方もするって。。 文章ってのは、自分が思っているより冷たく伝わるもんだから、 気をつけて書いた方が、お得だよ(゚Д゚)ゴルァ! 位に構えていればいいんじゃない? いちいち腹立てるより楽だよ。
まあ鬼門の月曜。変な香具師が多い。 まったり構えてろってこった。
ちょっとウケタヨww
セレクトメニューの選択されている項目を Javascriptで動的に変更したいと思っています。 たとえばテキストボックスに3を入力し、submitしたら セレクトメニューの3番目の項目が選択されるといった具合です。 いろいろ検索しても私のつたない能力では分かりませんでした。 何かヒントでもお教え願えませんでしょうか…
>>824 submitする瞬間に選択メニューの項目を3に変更するだけで
いいの?そのまま提出されちゃっていいの?もしそうなら
<form ... onsubmit="change(); return true">
として
<script type="text/javascript">
function change() {
var i = parseInt(document.forms.フォーム名.elements.テキストボックス名.value);
if(i > 0) --i;
document.forms.フォーム名.elements.メニュー名.selectedIndex = i;
}
</script>
をどっかに入れる。もしよくないのなら…欲することをきちんと日本語で
書けるようになってくれ。
>>825 即レスサンクス。
selectedIndexを使ったら出来ました。
>document.forms.フォーム名.elements.メニュー名.selectedIndex = i;
>もしよくないのなら…欲することをきちんと日本語で書けるようになってくれ。
スマンな。リアルで3年引きこもってたんで人に意志伝えるの苦手なんだw
人と話するのマジで怖い。
>>818 もういいです!!(`・ω・´)
もういいです..(´・ω・`)
で、受け取り方が、ずいぶん違うな。
>>826 人には負けない何かを身に付けろ!!(`・ω・´)シャキーン
と月並みな事を言って見るテスト。
小さいことにくよくよしたりしてない? 自分のやりたいこと やれること やればいいんだよ 少しずつさ それが強さになるんだよ きっと (シュッ)
藻前が月並みなら洩れは馬並みだ。
>>757 >>765 そんなんがあったんですな…。スタック仕様に作り替えてもエラーが出たのでおかしいと思いました。
IEで、CSSを入れ子@importしてあるページのアドレスバーで、
JavaScript:alert(document.styleSheets[0].imports[0].imports[0].imports[0].href);
JavaScript:alert(document.styleSheets[0].imports[0].imports[0].imports[0].imports[0].href);
上はOkで下は飛びました。 面白いことにtyr〜catchも効きません。
調べると
c0.css
@import(c1.css)
c1.css
@import(c0.css)
で、制限までお互いを読み込みあってました。
IEの中の人は外部CSSの相互参照を解決するために、ぬるい手をつかったポイです。
IE用コードの中核部分はこれです。
function getImportsHref(impCSS) //impCSS:document.styleSheets[x].imports[y]
{ 〜
var result=impCSS.href+"<br>\n";
for(var j=0; j<impCSS.imports.length; j++) result+=getImportsHref(impCSS.imports[j]);
return result;
}
〜
r=getImportsHref(document.styleSheets[0].imports[0]);
ヤッパリ来たか悪の手先め!
832 :
831 :2005/07/04(月) 23:29:43 ID:???
誤爆スマソ
>>829 人には負けない何かって、そういう意味じゃ無いのよ。
(ノ´∀`*)<自信に繋がるなら良いけどね。
>>830 ひでえ…しかしそのCSSファイルをまずチェックするべきだったんでわ…
importsという配列があるのは知らなかった、勉強になったよサンクス。
ん、何? 実は結局ちゃんと書けば 3階層以上読めた、ってことで解決したの?
CSSが無限再帰するように書かれていたのをそのまま追跡したため スタックあふれになったと思われ。IE対応するには3レベル目で 止めればいいんだろうが、そもそも無限再帰するCSSなんてひどすぎ。
837 :
Name_Not_Found :2005/07/05(火) 09:03:45 ID:Ev2KNb2o
質問です。 配列にデータを仕込んでonclickイベントで呼び出す基本的なスクリプトですが、 JavaScriptが円滑に動作する上で、配列でのデータのスタックの限界はどれくら いなのでしょうか。配列の1要素のサイズは大きくなく var arr = new Array() arr[0] = 'A-123-0011' arr[1] = 'A-123-0012' ... ... のようなものです。
そんなら10万くらい楽勝だろ。 var a = new Array(100000); for(var i = 0; i < 100000; ++i) a[i] = 'A-123-' + i; 一瞬で終わるはず。やってみそ。
839 :
837 :2005/07/05(火) 09:46:33 ID:???
>>838 早速のお答えありがとうございます。
お示し下さったコードを実行させてみました。イベントボタンが凹から凸になる
までに43秒かかりました。数字を10万から減らして適性値をつかめばよいと
思いますが、目安は何秒以下くらいでしょうか?
ちなみにユーザの最低レベルの環境を考慮して
Microsoft Internet Explorer
Mozilla
4.0 (compatible; MSIE 4.01; Windows 98)
Win32
の環境下でテストしてみました。
質問です。 ローカル環境で、HTML、Javascriptのみ使っています。 トップのページにチェックボックスで、A,B,C,D,E とあります。 それぞれ、チェックを入れられたページにのみ、遷移したいのです。 たとえば、A,C,E にチェックされたら、 トップページ → Aページ → Cページ → Eページ のようになります。 次ページ(Aページ)への遷移では以下のように記述しましたが、 そのあとが続かなくなってしまいました・・・。 function act() { if (document.form.A.checked == true) { document.form.action = "pageA.html"; } } Aページ以降でも、チェックされたページのみ順に遷移することは可能でしょうか?
>>840 JavaScriptの基本を学んでないのが一目瞭然。
>>839 うーん、Win98のIE4.01かあ…意表を衝くショボさだ(ry
まあ、0.5秒がめやすかな?
>>840 「遷移」というのは、何もしないでも次々に表示ページが
切り替わるという意味なの?あるページのJavaScript実行は
そのページの表示が終わる時点で強制終了させられるので、
別窓とか開いてそこでコードを動かすなどしないと無理ぽ。
または、各ページにスクリプト入れてどのページを渡り歩く
べきかをクッキーで保持するとかかな。
上記
>>842 の最後の方針で作って見たが。
---main.html---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function move() {
var names = ['a','b','c','d'], pgs = [], next;
for(var i = 0; i < names.length; ++i) {
if(document.forms.f0.elements[names[i]].checked) pgs.push(names[i]+'.html');
}
if(pgs.length <= 0) return;
next = pgs.shift(); document.cookie = 'PAGES=' + pgs.join('+');
location.href = next;
}
</script>
</head><body>
<form name="f0" action="#" onsubmit="return false"><p>
A<input type="checkbox" name="a">B<input type="checkbox" name="b">
C<input type="checkbox" name="c">D<input type="checkbox" name="d">
<button onclick="move()">Move</button></p></form></body></html>
---a.html--- (b,c,dもファイル名と表示内容以外同一)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var a = document.cookie.match(/PAGES=([a-zA-Z\.\+]+)/), b = a[1].split('+');
if(b.length > 0) {
var next = b.shift(); document.cookie = 'PAGES=' + b.join('+');
setTimeout(function() { location.href = next; }, 1000);
}
</script></head><body><h1>A</h1></body></html>
>>839 配列や文字列のサイズはスタックの消費量とは関係ない。
実際にスタックに乗るローカル変数はポインタみたいなもので、
データは参照されたときにヒープから読み出すと考えたらいい。
ローカル変数は基本的にスコープを抜けると解放される。
頻繁に呼ばれる静的な関数で特定のデータを読み書きする
操作の場合、ローカル変数ではなくプロパティにした方が
確保・解放を繰り返さないので効率は上がると思う。
>>840 つっこみどころ満載だけど、とりあえずヒントだけ。
ページが遷移した後に URI にクエリーがついてくるでしょ。
それをパースしてどうにかすればいい。
便乗質問すまそ。
>>844 > ローカル変数は基本的にスコープを抜けると解放される。
> 頻繁に呼ばれる静的な関数で特定のデータを読み書きする
> 操作の場合、ローカル変数ではなくプロパティにした方が
> 確保・解放を繰り返さないので効率は上がると思う。
これってグローバル変数(=windowのプロパティ)にするといい、ってことすか?
よっぽどヘンなことをやってない限り、ローカル変数で済む ものはローカル変数にするのが吉と思うよ。今回のも異常な チューニングが必要な話とは思えない。
847 :
Name_Not_Found :2005/07/05(火) 12:32:44 ID:z9j/+iVm
>>842 説明が足りず、すみません。
各ページに「次のページへ」等のボタンを置いています。
>>845 はい。ただし所有者は window の限定されるわけではない。
基本的のオブジェクトはどこからも参照されなくなれば解放される。
所有者を解放せずに明示的にプロパティを参照しなくするには
delete 演算子を使う。
所有者がオブジェクトでそれがアンロードまで廃棄されなければ
いいので、用途に応じて関数自身のプロパティや、イベントの
target のプロパティにするというのも考えられる。
849 :
Name_Not_Found :2005/07/05(火) 12:56:04 ID:qpJQKARH
window.openで サイズ指定してスクロールバーのないウィンドウを空けようと思っているのですが よくあるIEのツールバーにインストールされるポップアップのブロックに これはブロックされてしまうんでしょうか? されるとしたらまったく開けなくなるんでしょうか? それとも開けるけどくずれるんでしょうか?
>>847 どっちにしろ、
>>843 をちょっと直せば済むじゃん。洩れは直さないよ。
あとは自分でやれ。
× 基本的の ○ 基本的に
>>849 自分で確認はしないのか?よくあるとか言われてもねえ。
普通、ローカルで済むもんを下手にグローバルに持っておくと 回収されずにメモリを圧迫するから、そっちを気にするもんだと 思うがなあ。
854 :
Name_Not_Found :2005/07/05(火) 13:09:47 ID:z9j/+iVm
>>850 おっしゃるとおりです。
質問いただいたので、お答えしたまででした。
お教えいただいた843、やってみますね。
ありがとうございました。
855 :
Name_Not_Found :2005/07/05(火) 13:37:38 ID:GmMwjG3d
>>849 ポップアップブロックはいろんなとこが出してるけど
クリックして **ms 以内の window.open() はブロックしない
みたいな判定をしているんじゃないかな
onload で window.open() すると大抵ブロックされるような気がする
>>853 壱利あるな。うん、うん。
・・・そーすると、
>>848 の
>基本的のオブジェクトはどこからも参照されなくなれば解放される。
は、どういうことだ?画背寝た?
>>855 自分の質問に「ご」付けてるヴァカいるか?なにさま?
自分で目撃したページのコードを菊ヴァカいるか?
ま、ソースも読めんヤシにコード書いても分かってもらえんだろ。
860 :
Name_Not_Found :2005/07/05(火) 13:54:14 ID:GmMwjG3d
>>859 学無いので丁寧に書こうと思ってやってしまいました。
すいません
>>857 いや、それで合っているよ。ローカル変数に入れたものは
そのローカル変数を含む関数の実行が終わったら参照できなく
なるから回収される。グローバル変数やそこからたどれる
オブジェクトのプロパティに格納したものはいつまでも参照
できるので回収されない。
863 :
Name_Not_Found :2005/07/05(火) 14:09:53 ID:GmMwjG3d
有難う御座います。参考に致します。
最初の質問以外はsage進行で。
865 :
Name_Not_Found :2005/07/05(火) 15:50:33 ID:rRvyZolX
全角文字を正規表現で表現するにはどうすればいいですか? 全角カタカナや全角ひらがなはできるんですが漢字なども含めた全角文字となるとどうすれば・・・
>>865 過去スレ(
>>862 )検索すれば複数回出てると思うが。すべての文字は
UNICODEで表されているので \uhhhh-\uhhhhとか範囲を指定すれば
どのような文字範囲だろうが指定可能。どの文字のUNICODE値が
いくつか人間検索しろという質問者はスルーされるんでそのつもりで。
>>866 > どのような文字範囲だろうが指定可能
高々 65536ですよ。
>>865 の扱う文字がその範囲に限定されるなら構いませんし、
実際、限定されるのだろうと思いますが。
Firefox で、
alert( String.fromCharCode( 0xe00a9 ).charCodeAt(0).toString(16) )
したら、見事に上位ビットは無視され( & 0xffff )て、"a9" になりました。
W3C の仕様では、#x10000-#xEFFFF は XML の要素名にも使えますが、
これらをカバーするには程遠い。16倍近くあります。
HTMLで、 と書いて、この Text オブジェクトの data から
UTF-8 のコードポイントを調べてみました。
encodeURIComponent( Text#data )
.replace( /[^%]{2}/g, function (hh) { return parseInt( hh, 16 ).toString(2) })
// %11110011%10100000%10000010%10101001
この4バイトを UCS-4 のコードポイントに直すと、
2進数で、11100000000010101001 となりました。
parseInt( '11100000000010101001', 2 ).toString(16);// e00a9
とりあえず、HTMLに最初から書かれていれば、ちゃんと保存されているようですね。
つまり、データをHTMLやXMLで保存して、encodeURIComponentしたものどうしで
比較すればどうにかなるのかもしれません。
>>867 > HTMLで、 と書いて
HTMLで、󠂩 と書いて
いやまあ、文字コード厨がいるとは知らんかったので。失礼しますた。 BMPの範囲内で、とか言えばお気に召すのかな。
FORMタグで囲まれたtextareaに表示する文字列に、 任意を色を付けるにはどのようにすればよいでしょう? JavaScriptで作られたWYSIWIGエディタとかでやってるようなことなんですけど、 一番基本的な原理が知りたいです。
>>870 [obj].style.color='#hex';
>>870 それって、textareaに表示されてる文字列の一部分だけ
色が変わるの?それだと
>>871 じゃできないよなあ。
>>834-836 ループ参照CSSはIEの挙動を見る為につくった物です。例え別ファイルを@importしても、
IEは
>>764 の通り3段目でその先を読むのを止め、JScriptはimportsの四段目で怪しい挙動に及びます。
次の2つのファイルを作り、同じ場所に置いて foo.html を開く。
挑戦すると、うちでは大丈夫じゃありません(IEは再起動をすると言ってくる)。
cssは簡単にするために自己参照ですがw、これが他参照でも同じはず。
●foo.html
<LINK href="style.css" type=text/css rel=stylesheet>
<script language="JavaScript">
c=document.styleSheets[0];
for(i=0;i<=3;i++)
{if (i==3) if (!confirm("挑戦する?")) break;
c=c.imports[0];
document.write(i+":"+c.href+" = "+c.cssText+"<br>");
}
if(i==4)document.write(i+"大丈夫だった<br>");
</script>
●style.css
@import url(style.css);
body{background-color:green}
874 :
871 :2005/07/05(火) 21:30:45 ID:???
>>872 textareaのvalue値(文字列)の各1文字ごとに色を変えるなんてできるの?
そんな仕様見たことないけど?わかって言ってるんだった、教えてみてよ。
875 :
865 :2005/07/05(火) 22:16:14 ID:rRvyZolX
>>866 解決しました。ありがとうございました。
>>874 いや、洩れも知らないんだけどなんか元質問見たらそういう風に
読めるような気がしてさ。
877 :
Name_Not_Found :2005/07/05(火) 23:05:48 ID:wEGpFsDT
数値を16進の文字列に変換する機能はありますでしょうか? 例えば 数値255→文字列"ff" とするようなものです。 この機能は自作しないとダメですかね? よろしくお願いいたします。
878 :
871 :2005/07/05(火) 23:25:59 ID:???
>>870 ,
>>876 ま、
>>870 の文章はテニヲハもいい加減でよくわからない。
それじゃ、任意のx、yということで
var p=x
var q=y
string = 'mission impossible'
str = string.substring(0,p).fontcolor('#000000')
+string.substring(p,q).fontcolor('ff0000')
+string.substring(q,string.length).fontcolor('#000000')
を、textareaでやってみてよ。不可能という方に10万アヴォガドだ。
>>877 激しく概出。過去ログに幾度も出ている。
そんなこと言うより 「 parseInt(num, 16); 」 って書いたほうがお互い早くない?
parseIntは文字→数値でしょ。 この場合はtoString
Σ その通り orz
Σって、しぐません、ってこと?(初めて見たなあこれ)
>>878 その方法じゃ当然できないんだけど(だいたいが自分がたまたま知ってる
方法で書いてみせて駄目だろなんて無意味すぎ)、たとえばTextRange
でテキストを選択しておいてexecCommand()で色が変えられたりしない
かなあと思っている。今手元にWindowsないんであとでやってみよ。
885 :
870 :2005/07/06(水) 01:21:05 ID:???
×:解体のJS情報サイトで、 ○:海外のJS情報サイトで、 orz
>>883 (゚∇゚|||)はぁうっ!
の類の省略とピ〜ンと来た、漏れはナウでヤングな若者なのさ〜
>>885 ホイ、簡単なサンプル
<html>
<head>
<title>designModeプロパティ</title>
<script type="text/javascript">
var doc;
window.onload = function ()
{
var ifr = document.getElementById("myIFrame");
doc = ifr.contentDocument // Gecko
|| (ifr.contentWindow ? ifr.contentWindow.document // IE 5.5
: document.frames[ifr.id].document); // IE 5.0
}
</script>
</head>
<body>
<p>
<input type="button" value="designMode" onclick="doc.designMode = 'on';">
<input type="button" value="bold" onclick="doc.execCommand('Bold', false, null);">
</p>
<p><iframe id="myIFrame" src="about:blank"></iframe></p>
</body>
</html>
designModeプロパティがポイントな。
あとはここらあたりを参考にがんばってくれや。
ttp://msdn.microsoft.com/workshop/author/dhtml/reference/commandids.asp ttp://www.mozilla.org/editor/midas-spec.html
892 :
871 :2005/07/06(水) 09:09:29 ID:???
>>884 ちょっと待っておくれな。たまたま知ってる方法で、ってあんた、ナメ宅地
きくじゃないの。TextRange やexecCommand()くらい誰だって知ってるだろ。
じゃあ、あんたに聞くが、TextRangeやexecCommand()という魔法のメソッド
を使えば、仕様を超えて好きなことができるとでも?textareaだろうがoption
だろうが、文字列を自由に1文字ごとに虹色に変えられるとでも?
ほぉ、それをうたっている仕様の箇所と根拠を示してもラオ―じゃねえか? 元質
問者は途中から実はiFrameでしたなんてのんきなこといってるが、この時点じゃ
textareaに限定で話を進めているのを忘れないでほしい。さぁー、やってもラオ−
じゃねえのよ。きょうはグレそうだぞ、ったくアタマに来る。
今度は何のネタですか?
894 :
885 :2005/07/06(水) 09:21:59 ID:???
何でもいいが動きもしないコードをわざわざ貼るのは迷惑だからやめれ。
>>895 ドイツの話をしてるかしらんが、
>>890 なら俺は動いたぞ(IE6)。
サンプルにもIE・Gecko限定の記載があったが。
>>892 は、10万アヴォガド賭かっているから必死なんだよ。
>>884 は、結果を教えてホスィ。
中途半端だと煽られそうだけどね。
>>898 やってみたけど、textareaの中はダメ。もちIE専なので注意。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
//var r = document.getElementById('a0').createTextRange();
var r = document.body.createTextRange();
r.moveStart('character', 1);
alert(r.text);
r.execCommand('BackColor', false, 'red');
}
</script>
</head><body>
<p>abcdefg</p>
<p><textarea id="a0" rows="5" cols="20">abcdefg</textarea><br>
<button onclick="test()">Test</button><p><p>abcdefg</p></body></html>
>>891 禿しくスレ違いのお燗。
Javascriptはクライアントサイド(分からなければググれ)の言語。
更新情報の作成は、サーバーでやるもの。
PerlかPHP版で聞けばいい。
>IE・Gecko限定 opera7の人はまたがんばらないのですか? 読んでて別にtextAreaにこだわらなくてもと思うのは、素人考え? div要素をboxで囲って、テキストの最後に常に点滅させたアンダーバーを付けとく。 boxをクリックするとフラグが立って、キー操作をイベントハンドラで監視して、 出入力を行うとか。 それでfontを変更するならspan要素噛ませてスタイル指定とか。 妄想の域を出ないんで悪しからず。
900超えたので次テンプレの確認をしま〜す。
>>1 → 過去ログ収録サイトに言及。手取り足取りスレは言及せずでよい?
>>2 (質問を書く上で) 変更なし
>>3 (FAQ) 変更なし
>>4 (主張の対立) → 英語文書の合意案を入れる
>>5-6 (過去スレ群) どうする? 過去スレ収録サイトがあるから不要?
>>7 (reference) 最新かどうか確認必要
>>8 (チュートリアル) とほほを「非推奨」と注記しておく --- 不要?
>>9 (ぐぐれ+関連スレ) 関連スレの最新版に更新
いちばんもめそうな
>>4 の改訂案、チェックよろ。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】
・仕様を読む:回答者であれば仕様は読んでいるべき。質問者でも仕様を
読まずにうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。
・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、
なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。
・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと
は無視」は不毛。質問者が分かって選択していれば尊重する。無知か
らIE専なのは指摘してあげると親切。
・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される
可能性大。非標準機能も損得を分かった上で使うならよい。
・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、
そこだけ見ているとIE専になる。あとは上2件と同様。
・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当
な理由があることも。尋ねて分かってないようなら煽っても可(w
・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選
択するべき。一概にどちらは駄目、とは言えない。
・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性
で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
904 :
871 :2005/07/06(水) 11:47:50 ID:???
>>897 おれのこと言ってるようだから、いうが、よく聞いとけ、このヴォケ。
このコードはtextareaじゃダメだろ、ってコードを例示して書いたわけさ。
だれが、これがtextareaで反映する(おめえの言い方だと「動く」)な
んて書いた?他のFORM系以外の一般の文字列オブジェクト(innerHTMLだ
とかも)なら反映するだろ?おめえの言い方だとそれでも「動か」なかった
か?
>動かないと豪語しつつ貼るな!!!
って、あんた、これいい加減なコードじゃねーだろが。ちがうのか?
ったく、きょうはこういうオタンチンのヴォケなすどもで、アタマに来ること限りなしだ。
ま、喧嘩はスルーで。
906 :
Name_Not_Found :2005/07/06(水) 12:18:53 ID:kovqcIK0
画像掲示板とかだと送信画像の選択に参照ボタン使うのが普通だと思うんですが、 ローカルフォルダの画像や他のブラウザで開いている画像をドラッグ&ドロップで 選択して送信するって出来ませんか?
>>906 セキュリティ上の制約から、<input type="file">のファイル名は
JavaScriptからはアクセスできない。従って、あんたの要望はJSでは
実現できない。ファイルを直接<input type="file">にドロップできる
ようなブラウザはあってもいいとは思うがやったことがないので知らん。
>>903 > 回答者であれば仕様は読んでいるべき。
厳しく受け止めるなら、少なくとも、DOM-Level-3-XPath まで
全読する必要があるが、そんな人は滅多にいない。
だから、「該当する仕様の該当する部分くらいは」と明記しないと
回答者が日本中で数名に限られてしまう、そんな心配が無くはない。
前々からそうだが、常連どもは回答者を自分たちに限定したいわけですよ。 よって 「該当する仕様の該当する部分くらいは」 に緩和してもいいのでは? 俺的には回答者の枠組みなぞ不問とすべきと思うが、まあ抵抗勢力多いから
とほほも
>>10 すら弄くる香具師いなかったじゃん。削除で良いんじゃね?
>>910 のように直してもいいと思うよ。他の人どうよ。
「該当する仕様の該当する部分くらいは」 言い回しが、煩雑では? 厳密ではないが「仕様の該当する部分くらいは」でいいのでは?
>>903 > 標準はブラウザが変わっても維持される可能性大。
DOM 限定の話だと仮定する。
これは、あまりに信心深過ぎると言わざるを得ない。
ブラウザが標準を変えた例や、理由があって標準を無視し続ける例は幾つも在る。
そもそも、DOM1-2 は、NN2-4, IE4-5 の後を追って作られたという歴史があるし、
仕様書作成メンパは、JSやJavaのヴェンダの人が主力になっている。
結局、現在までの流れは、ヴェンダが作った仕様を発展させて標準が作られている。
従って、標準はより複雑多機能化しているから、標準を先に読めば、
ヴェンダ独自の仕様が読みやすくなる……ただそれだけのことですよ。
というか、JSのDOM実装はどれも十分標準準拠しているよ。
ここら辺で詰まる人は丸投げスレで各ブラウザに分岐したコードを
書いてもらうよう誘導すれば良いと思う。
つまり、具体的な案としては、
「このスレでは標準準拠のコードまたは
独自仕様のコードだけを書くようにする。
相互変換は各自が勝手にやれ。こういう翻訳まで求めるなら、
翻訳自体を質問内容にするか、丸投げスレに行け。」
という感じでどうだろうかと思う。
>>903 > innerHTML vs DOM:それぞれに長所/弱点がある
具体性に欠ける。どういう時にどちらを使うかは、決まりきっている。
新規に追加する時は、高速なものを使う。
一般に、文字列で渡して処理を委ねるのが速い場合が多いから、
insertAdjacent??? や inner??? を使う機会が必然的に多くなる。
次に、削除変更とシブリング追加は、オブジェクトが維持されるものを使う。
従って、これらを inner??? で行うのは誤り。
但し、将来に渡って全てのスクリプトを管理できる確証があるなら、
好きなものを(高速なものを)使えば良い。そんな作者はいないだろうが。
>>914 賛成だ。
>>916 2行で書ける内容を提案するか削除提案かどっちかにお願い。そして
「簡単に書きたい(からinnerHTML)」とかも質問によっては否定は
されるべきでないと思う。そのためああいう抽象的な表現になったと。
>>915 どっちかだけっていうのは難しいんじゃないの。イベントですら
IEでも動くためには振り分ける必要があったりするし。だから反対。
当該記述は標準なんかどうでもいいという人を説得するためのもの
だと思う。
新スレは975超えたら。それまでにまとまらないようなら現行のまま。
>>903 > 上書きが心配なら
この辺の用語は慎重に。
上書き:
function F () { }
F.prototype.x = 1;
var f = new F;
print( f.x);// 1
f.x = 3;// 上書き
print( f.x);// 3
delete f.x;// delete F.prototype.x; しているわけではない
print( f.x);// 1
書き換え:
function F () { }
var f = new F;
f.x = 1;// 割り当て、セット
print( f.x);// 1
f.x = 3;// 書き換え、更新
print( f.x);// 3
delete f.x;
print( f.x);// undefined
var a = 1; a = 3;// 書き換え、更新
document.onclick = unknownHandler0;// 知らない誰かのスクリプト
document.onclick = knownHandler;// それを書き換えた、onloadプロパティを更新した。
document.onclick = unknownHandler1;// しかし、知らない誰かに書き換えられた(更新された)。
>>918 × onloadプロパティを更新した。
○ onclick〜
921 :
Name_Not_Found :2005/07/06(水) 16:34:00 ID:5hp3/xPQ
質問です。 子ウインドウをポップアップさせたあと、そのウインドウが親画面のスクロール (タテ方向)に合わせて付いて来るように、することは可能ですか。できれば、 スクリプトのポイントなりとも教えて下さい。
付いて来る、が位置固定の事なら 「javascript メニュー 固定」でぐぐってみよう。
>>921 次の点が意味不明です。
○「子ウィンドウ」は別の窓なの?(普通はそういう意味だが)。
それともレイヤーのようなもの?それともまだ違う?
○「合わせてついてくる」は親画面を上にスクロールするとその
「別窓」全体が一緒に上に動く?それとも「別窓」は画面上の同じ
位置にとどまる?それとも「別窓」の中が一緒にスクロール?
自分の日本語がどれだけ曖昧か反省すれ。
>>2 を読め。
924 :
ジュンコ :2005/07/06(水) 17:06:24 ID:KQOhla80
過去ログリストは消していいと思う。
>>911 のサイトもあることだし。
>>911 2ch の dat ファイルがどこにあるか今初めて知ったw とれたらやっとくよ。
926 :
921 :2005/07/06(水) 17:27:46 ID:2i1wUELY
>>921 もういいです。
自分の読解力のなさと性格の悪さを猛烈反省して下さい。
927 :
921 :2005/07/06(水) 17:30:09 ID:gf1U1Yzb
>>927 これっぽちで? アンタ2ちゃん向いてないよ。
>>2 は何の
ためにわざわざ貼られてると思う? まあもう来ないんなら別にいいけど。
929 :
Name_Not_Found :2005/07/06(水) 18:10:23 ID:NzBueqQn
930 :
Name_Not_Found :2005/07/06(水) 19:32:55 ID:STISt4Jg
お聞きします。new Optionというのがありますよね。これが将来的に 廃止されるとのことですが、本当ですか? optionの生成は今後どうすればよいのでしょうか。createElement() で統一という考えなのでしょうか。tipsを下さい。ちょっと深刻です。
new Option -> createElement だと何が問題なのかわからん。
>>930 new Optionは標準にはなく、createElementは標準にあるってだけ
でしょ。廃止されるかなあ。ところでなぜcreateElementでは
いけないのか伺いたいけど。
934 :
906 :2005/07/06(水) 19:57:18 ID:???
>>907-908 よくわかりました。ありがとうございます。
IE限定ならActiveXとかで可能なのかな、とふと思いましたが
スレ違いですね。どうもでした。
>>933 createElementだとIEで困る。というか面倒くさい。
HTMLSelectElementでappendChild()などが使えない。
HTMLOptionElementではinnerTextとかも使えない。
これらは特殊な要素のようだ。
HTMLSelectElementのaddメソッドも標準のと引数が違うので面倒くさい。
>>935 面倒は大したことないと思うが、IEでHTMLSelectElementの
appendChild()が駄目ってマジ?そんなんじゃDOMじゃないじゃん!
非標準のinnerTextはどうでもいいけど。
937 :
Name_Not_Found :2005/07/06(水) 22:15:33 ID:EpP3oJoE
質問いいですか。 HTMLのリストで、 <li>Plants<br>Rose,Daffodyle,Panzy,Hyuakintos,... などのようにした場合、最初の<br>のタグまでの文字列(つまりPlants)を 太字にするようにタグの<br>をマーカーにしてできませんか? <span>でのスタイル指定をしないで済むようにしたいのですが。
>>937 それはマークアップを改善すべきところだと思うが……
つ :first-line
new Option が撤廃されるころには IE のバグもちょっとは直ってるでしょ。 じゃないとたまらん。
>>937 洩れも
>>938 同様に思うがJSで<b>...</b>を挿入するとかなら別に難しいってことはない。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg() {
var a = document.getElementsByTagName('li');
for(var i = 0; i < a.length; ++i) {
var l = a[i], b = document.createElement('b');
while(l.childNodes.length > 0 && l.firstChild.nodeName != 'BR') {
b.appendChild(l.removeChild(l.firstChild));
}
if(l.childNodes.length == 0) l.appendChild(b);
else l.insertBefore(b, a[i].firstChild);
}
}
</script>
</head><body onload="chg()">
<ul><li>this <em>is</em> a pen.<br>that is a dog.</li>
<li>Today is Sunday.<br>Yesterday was Friday.</li></ul></body></html>
>>937 スレ違いだけど、明らかに
<ul>
<li>Plants<br>Rose,Daffodyle,Panzy,Hyuakintos,...
↓
<dl>
<dt>Plants</dt>
<dd>Rose,Daffodyle,Panzy,Hyuakintos</dd>
</dl>
だろ。
んで
<style type="text/css">
dt { font-weight:bold; }
</style>
onclickイベントでフォームを送信可能でしょうか? 見た目はリンクのままひそかにPOSTで送信したいので 下のような感じです。 <form method="post" action="hoge.cgi"> <input type="hidden" name="hoge" value="ほげ"> <a href="javascript:;" onclick="">リンク</a> </form>
どしたのみんな?近頃妙にやさしいね。
いつもかなりキツイこと書いてた香具師出てこんじゃん。
>>246 とか
(ああ、召還はしてないんで一応)
>>910 こいつはわいだがなw
>>906 ,921,930前からageてるのと同じ奴だろ
>>888 読んだか?分かっててやってるならその旨を書け。
態度が分かりずらいのであまり気にしてはなかったが
そろそろスルー・叩き潰しに入ってもいい頃かな?
>>942 クライアントがリンク先に飛ぶ前に自分とこに何か情報を何か渡したいなら
<a href="
http://hoge.jp " onclick="form[num].submit()">
で良いんじゃない?ソース見られてすぐにsubmit()してるのがわかるのが嫌なら
JSファイルに関数作ってそこですればいい。
蛇足だけど、onclick/onmouseup/onmousedown vs hrefの挙動はそれぞれ違うんだね。
<a href="
http://www.yahoo.co.jp " onmouseup="alert('yahooいった?')">href vs onmouseup</a>
<a href="
http://www.yahoo.co.jp " omousedown="alert('yahooいった?')">href vs onmousedown</a>
<a href="
http://www.yahoo.co.jp " onclick="alert('yahooいった?')">href vs click</a>
onmouseup:リンク飛ばない。
onmousedown:イベント無視。
onclick:イベント→リンク
(※IE)
946 :
Name_Not_Found :2005/07/07(木) 06:10:27 ID:9Vk7we2b
なにエラそーなこといってんだよヴァーカ.
キミみたいなの、
だいっキライ
>>944
ジエン?
>>935 appendChild使えるじゃん(IE6で確認)。これが一番簡単かと。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg() {
var s0 = document.getElementById('s0'); s0.options.length = 0;
for(var i = 0; i < 10; ++i) {
var o = document.createElement('option'); s0.options[i] = o;
o.appendChild(document.createTextNode('X' + i));
}
}
</script>
</head><body>
<select id="s0"><option>A</option><option>B</option></select>
<button onclick="chg()">Change</button></body></html>
951 :
Name_Not_Found :2005/07/07(木) 12:07:28 ID:KB/cyYkZ
引数の質問でお願いします。基本的なことだとは思いますが、 イベント側で、onClick="F1(a,b)"というハンドラがあるとします。 このとき、実際のスクリプト部分で function F1(x,y,p,q){...........}と新たにp,qが引数として 入っていたりします。このような場合は、最初のx,yがa,bに対応する ということでよいのでしょうか。 それから、p,qの新たに出現している引数ですが、これらは宣言なしで スクリプト内で有効に働くものなのでしょうか。どうもすっきりしません。 どなたか、解説お願いいたします。
>>951 もちろんxにaの値、yにbの値が渡される。pとqは初期値がnull
ということになる。作者の意図がそれで合ってるかどうかは知らん。
>>952 null じゃなくて undefined では?
与えられなかった引数が初期化されるなんて聞いたことないけど。
>>944 チミは、あれだろ。。
>>826 ,827,828辺のやり取りで虫唾が走り
>>829 を、書きたくなるタイプだろ?
>>826 =829という可能性もあるけどね。
よ〜し、チミは
>>831-833 辺のやり取りから
「悪の手先、馬並みくん」と思う事にするよ。
「エロショッカーの団員3」辺りから初めるとしよう。
今後の活躍次第では、皆の頭の中で怪人や大幹部への
格上げもあるだろう。
がんばって活躍してくれたまへ。
※但し筋が通っている場合は、
格上げされない事があるので注意してほしい。
ブラウザの前の、みんなとの約束だ!
まぁあれだよ。
お手柔らかにお願いしますね。。。
>>956 洩れが829ですが、すべて外れですな。ちなみに本当に○並みか
どうかはコメントを控えますorz
精神病患者の匂いがする
959 :
Name_Not_Found :2005/07/07(木) 13:38:07 ID:6/juiOmM
便乗質問ですみません。JavaScriptで function func(x,y,p=null,q="nullpo"){ // hogehoge; } みたいに初期値を設定したいときって、どうすれば良いでしょうか。 とりあえず引数を設定しないで、argumentsを数えてごにょごにょする 方針でやっているのですが、結構面倒です。 なにか良い方法がありましたらよろしくお願いします。
>>959 funcの先頭の文として「if(!p)p=null; if(!q)q="nullpo";」
を入れておいてはどうですかね?
>>959 やりたいことわからないけどこれじゃだめなの?
function func(x,y){
p=null;
q="nullpo";
// hogehoge;
}
>>961 それじゃ変数pやqにパラメタ値を渡せないじゃないか。
質問の内容は「パラメタ値が渡されなかった場合にデフォルト値を
設定するようにしたい」であると洩れは理解したのだけど。
963 :
Name_Not_Found :2005/07/07(木) 15:18:36 ID:qTDyoajG
htmlで(1)エクセルファイルを表示 ↓ (1)に仕組まれたマクロをjavascriptで動かすことは 可能でしょうか? このあたりご存知のかたご教授下さい。
>>960 だと値が Boolean に自動変換されてから比較されます。
実際はそれでも問題ない場合が多いですが、本当に undefined かどうか
調べるには typeof p == "undefined" とします。
undefined は特殊な値ですので、定数 undefined との比較は失敗します。
>>964 > undefined は特殊な値ですので、定数 undefined との比較は失敗します。
undefined === undefined // true
NaN === NaN // false
NaN == NaN // false
var a
a === undefined // true
a = Number( a) // NaN
isNaN( a) // true
a === NaN // false
a == NaN // false
横からさらに便乗してすいません・・・
>>964 ,
>>965 いつもよくわからないのですが、
>調べるには typeof p == "undefined" とします。
とありますよね。で、評価のときには、
undefined === undefined
or
a === undefined
と裸です。ということは、
typeof p == undefined
と書くべきなのではないのでしょうか?
>>965 古い JScript の資料を見て書いたので間違っていたようです。失礼しました。
Mozilla でテストしたところ、あなた様のご指摘通りになりました。
IE 5.01 SP4 では、最初の行でエラーになるようです。
エラー: 'undefined' は宣言されていません。
コード: 0
互換性を考えて undefined との比較はすべきでないということに訂正します。
>>963 ブラウザで.xlsファイルを表示したとき動くのはexcelプラグインなの?
単なるHTML書き出しだったら、あくまでもHTMLしかないんだからexecel
マクロは動かないと思うがな〜。
970 :
Name_Not_Found :2005/07/07(木) 17:23:07 ID:VPM0oyZ4
質問です。お願いします。 var Name = 'Television'; alert(Name[0]+Name[1]); これがNaNになるのはなぜですか。いくら考えてもわかりません。
>>970 JavaScriptでは「文字列」は「配列」とは全然違うモノだから。
文字列中の文字の文字コードを抽出したければ
alert(Name.charCodeAt(0) + Name.charCodeAt(1));
お約束のひとこと: JSはCやC++じゃないんだ、脳内言語仕様で
コードを書くのはやめて素直にひととおり勉強すれ。
だいたいが「alert(Name[0])」すら試してないんだろ〜。
>>970 それはJScriptの話だよな?
JavaScriptだと"Te"と表示されるぞ。
undefined + undefinedがNaNになるのは両方とも一緒だが。
>>970-972 整数の添字でその文字が取り出されるというのはECMAにはない
JavaScript固有の仕様なのかな、しかもJavaScript 1.5 reference
に書かれていないような気がする…探してるんだが。
>>972 ホント?JavaScriptでもNaNなんだけど。なんなの?
>>974 やっぱりバージョンで違うのか。Moz1.7.8だと
>>972 のようになった。
ともかくそこは処理系依存だから使うべき機能じゃないと思われ。
>>975 バージョンというより、UAによるものと思われ。
Netscape vs MSIE , Opera 5.x
といったところか。たぶん。
>>950 「HTMLSelectElement」でappendChild使えない。
add使えと言われるでしょうが、引数がw3c domと違うので面倒という話。
それから、言われてみればinnerTextはどうでもいいとしても
childNodesとかも使えね。
だからHTMLOptionElement::appendChildじゃなくて HTMLSelectElement::appendChildですよ
>>980 ああそうかスマソ了解。だからselectにはoptions配列への代入を
使って追加するのが吉かもね。それならadd()の引数形式が違う
問題にブチあたらないし。
>>980 じゃないけど
>>950 をちょっと変えてこうすると IE が
アプリケーションエラーでお亡くなりになる。(IE 5.01 SP4)
[A] と [B] を逆にすれば動く。
function chg() {
var s0, i, o;
s0 = document.getElementById('s0'); s0.options.length = 0;
for(var i = 0; i < 10; ++i) {
o = document.createElement('option');
s0.appendChild(o); // [A]
o.appendChild(document.createTextNode('X' + i)); // [B]
}
}
i が 2 回宣言されてるな。for の中の var は取ってください。 childNodes は大丈夫だけど removeChild が何かおかしい。 上の [A]、[B] 入れ替えに以下を追加。<select> に multiple を指定。 X1, X2, X3 を選択して Remove を押すと X2, X3, X9 が削除される。 function remove() { // 削除 var s0, i, o; s0 = document.getElementById("s0"); for (i = s0.childNodes.length - 1; i >= 0; i--) { o = s0.childNodes.item(i); if (o.nodeType == 1 && o.selected) { alert("序数" + i.toString() + " テキスト" + o.text); s0.removeChild(o); } } } <select id="s0" multiple><option>A</option><option>B</option></select> <button onclick="chg()">Change</button> <button onclick="remove();">Remove</button>
>>980 勝手に自分語を作るな。何だHTMLSelectElementって。
わけのわからんこと言ってないでソース出せば済むんだよボケ
989 :
972 :2005/07/08(金) 01:02:47 ID:???
>>989 そのページを見てたんだけどreference部分には何もなくて…
まさかそのexampleの1個でぽっと定義されているとは…
(そもそも定義なのかね?)
まあでも公式にはドキュメント化されてないJavaScriptの仕様って結構あるよね。 ゲッター/セッター回りとか。
>>951 まずfunction F1(x,y,p,q){...........}が定義。こちらが先に在りき。
でonClick="F1(a,b)"で使用してるわけだ。
>p,qの新たに出現している引数ですが、これらは宣言なしで
定義でプロトタイプ宣言してるだろ。逆に考えないこと。
function F1(x,y,p,q){var hoge=p;}も
function F1(){var p,hoge;hoge=p=arguments[2];}も同じ。
で、p、qが使用する箇所で値を代入していなくても、
>>954 の通りundefined。
要は製作者が宣言内でデフォルト設定してあって、
特にx、yだけ値を渡したかったのだと思うぞ。
ちなみに宣言した引数より多く引数を渡してもJavascriptでは問題ない。
function F1(x,y,p,q){
・・・・・
(arguments.length > 4)?var r=arguments[3]:var r=1;
・・・・・
}
F1(),F1(x,y,p,q,r);何の問題もない。
pだけ抜きたいとか?前に話題に上がったような・・・
994 :
991 :2005/07/08(金) 09:21:01 ID:???
>>993 おっとGuideのほうにありましたか。これは失礼。
じゃあまあ「公式には文書化されていない仕様もいくつかある」に訂正しときます。
レス埋めついでに、 今まであれだけいろんなところに突っ込んでた頑なな頑固者はどうなった? 最近それらしいレス見かけんけど。 俺は他に懐柔しておとなしいレスになったとは思えんのだが・・・ ウザ過ぎるのも嫌だが、こう居なくなっても寂しさが残るな。 たまには顔出せよ。 もしや明徳館の彼ではないのだろうか。んなことはないか?
>>995 いや、いるよ(笑)。スレ立て人ですし。実は
>>992 が燃料なんでどうしようかと思っていたんだけど。
「プロトタイプ宣言」はCやC++にはあるがJavaScriptにはない。
あるっていうのならreference示してみろやボケ!!!
なんていうんだけど、どうかな(ry
そんな感じで具体的理由を付けて、 煽ればお互い勉強になってよいのでは? 間違ってれば、煽ってもらえるかも知れないしね。 理由が分からず煽られると、ただ雰囲気が 悪化するだけで身にならい。 実は知らないが、腹が立つという事を燃料に 調査を進める事は多々あるなぁ漏れ。
あ〜あと完璧な理由でなくても、 突っ込み所を、わざと残しておくのも 話が盛り上がって面白いと思う。 誰かが知っているか、調べてくれて楽だし、 わざと残しているので、対応しやすい。 そう、、 全ての誤りは、話を盛り上げるための 燃料として故意に残しているのです。(大嘘
俺に1000取らせるつもりか 1000っと
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。