+ JavaScript の質問用スレッド vol.50 + >>950 仮にFAQが無かったとしてFAQのQ1-10まで1スレで出ると思うのか?
質問自体は過去ログみれば何回もでてきてるやん。
現実的に知らない人が多いって話。
>>951 こういうことでなく?
var from = (new Date()).getTime();
for (var i = 10000; i--;) { func(); }
var to = (new Date()).getTime();
alert(to - from);
でもJSの処理自体は結構遅い部類だよね。
953 :
951 :2006/09/16(土) 20:42:40 ID:???
>>952 ありがとうございます。objを指定しなさい、と叱られました。
func()のあたりだと思いますが、ご再考を。すいません。
わろっしゅww
956 :
Name_Not_Found :2006/09/16(土) 20:57:04 ID:RGY9Uj/e
URLの?より後ろの部分、いわゆるQUERY_STRINGをJavaScriptで取得できませんか?
location.search
新スレは975超えたら。FAQの追加/変更は議論が間に合わなさそうなんで、 今回は保留ね。
975までに誰かが素晴らしいFAQ11-20を作ってくれたらそれでもいいけどね
AJAXで2つのファイルを同じページの別々の場所に読み込みたいのですがうまくいきません function printPage() { file= "file"; space="space"; getPage(); file= "file2"; space="space2"; getPage(); } function getPage() { xmlhttp = createXMLHttp(); if (xmlhttp) { xmlhttp.onreadystatechange = setPageData; xmlhttp.open("GET", file, true); xmlhttp.send(null); } } function setPageData(){ if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ document.getElementById(space).innerHTML = xmlhttp.responseText; } } function createXMLHttp() { 省略 } といった感じでやっているのですが、どうもうまくいきません file= "file2";から下に3行を消せばちゃんと動くのですが... どうにかうまく表示させる方法はないものでしょうか?
>>960 自作の関数にパラメタをつける方法をまず勉強したまへ。そして
xmlhttp.onreadystatechange = function() { setPageData(f); };
とする。もちろんfはgetPageのパラメタとして外からファイル名を渡す。
今は1個目のgetPage()を読んで終わったらすぐfileとspaceを
書き換えてしまっているので、読み込み終わってsetPageData()が
呼ばれた時には古い値は書き換えられて失われてしまってるだろ。
グローバル変数で受渡しって何十年前の発想だよそれって感じ。
独断と偏見により作ってみました。20もないですが。 【FAQその1】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… A3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが… A3. セミコロンで複数の文を区切られます。onclick="foo();bar();"としましょう。 Q4. document.write(...)でページ内容を追加したいのですが… A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Gecko(N6/N7/Firefox等)で対応済。 Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。 Q6. DOMでtable要素にtr要素を追加しても表示されないのですが… A6. IEではtbody要素にtr要素を追加する必要があります。 tbody要素はtbodyタグを書いていなくても自動的に作成されます。 またはtable.insertRow()/tbody.insertRow()を使いましょう。 Q7. Aタグのonclickで動作指定してるのですが時々動きません… A7. 「onclick="...;return false"」としないとページ移動しちゃうから。 Q8. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A8. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q9. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A9. 「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;」。
【FAQその2】 Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A10. IEではe.currentStyle、Geckoではwindow.getComputedStyle()を使います。 Q11. 100*1.15の結果が114.999…998となってしまうのですが… A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが… A12. Geckoのnew XMLHttpRequest()、IEのnew ActiveXObject("Microsoft.XMLHTTP") を使えばできる。古いブラウザだと隠しフレームに読むなどのワザが必要。 Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません… A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどうぞ。 なお、onclickなどのイベントハンドラに指定するのは関数名のみです。 後ろに()をつけるとイベント時ではなくその場で関数が実行されてしまいます。 setAttribute("onclick","foo();bar();")などとしたいときは obj.onclick=function(){foo();bar();}という風に関数式を使いましょう。 Q14. 以下のコードが思ったとおりに動かないのですが… function MyClass(element){ element.onclick=function(){this.method();}; } MyClass.prototype.method=function(){...}; var myObj=new MyClass(...); A14. thisが指す値は状況により変化します。以下のようにしましょう。 element.onclick=function(x){return function(){x.method();};}(this); Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが… A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、 offsetがマッチした位置、sが置き換え前の文字列全体になります。
>>963 > QA-14
それだったら
...onclick = this.method;
でいいじゃん。バカか?
>>963 > QA-13
1996年から1997年、HTMLのイベント属性。
1997年から199年、イベントプロパティに匿名関数。
1999年から現在、attachEventやaddEventListener。
どうして、歴史的に見ても、暫定的な方法だった、onclick = function を薦めるんだ?
今はもう2006年で、お前らが相手にしているブラウザ全てで
addEventListenerかattachEventを使えるだろう。
その暫定的な方法で、thisを使う癖がついているから、
いつまでたっても、イベントオブジェクトへの問い合わせが苦手なんだろ。
いいかげん、頭を切り替えろ。
やってることわかればいいんじゃねーの? とは思うが、
まあ普通 setAttribute("onclick" 〜はやらんわな。
とりあえず
>>962-963 乙。
文句いうやつはそこを書き直すくらいしようぜ。
> A13
IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどうぞ。
複数の関数を呼びたいときは obj.onclick=function(){foo();bar();};
という風に無名関数を作りましょう。中に書かれたコードが実行されます。
> Q14
Q14 以下で "hoge" を出すにはどうしたら?
function MyClass(element){
this.title = 'hoge';
element.title = 'fuga';
element.onclick=function(){ alert(this.title); };
}
var myObj=new MyClass(...);
とか?
addEventListenerはremoveEventListenerしないとまずいのかしら?とか思い込んでるのであまり使っていない。 element.onclick = eventHandler; element.onclick = eventHandler; と重ねても一度しか実行されない。 element.addEventListener("click", eventHandler, true); element.addEventListener("click", eventHandler, true); これも多分問題ない。 element.addEventListener("click", function(e){ eventHandler(e); }, true); element.addEventListener("click", function(e){ eventHandler(e); }, true); こういうのは二度実行されるからまずいよね?
> これも多分問題ない。 うそん。 それ、二回実行されないほうがまずくね?
>>969 > setAttribute("onclick"
あー、ごめん、気分的問題っていうか。
HTML的に標準な属性には setAttribute 使うけど、およそJSのためだけの属性とかには使いたくないっていうか。
個人的な意見でしたゴメソ。
いわゆる現在の 「初心者」 的には onclick じゃないかなー、と思った次第。
まあ addEventListener 系はもう一個 Q&A 増やすのでもありかとw
「Q いつでもイベントを追加したり削除したりするにはどうしたら?」 とかで。
>>970 その仕様知らんかたw
addEventListener は後方互換用にラッパー作ってやってんだけど、ちょっと作り直さなきゃだなー。
残念ながら980までにまとまりそうに無いな 諦めよう
This new static class extends long native double package label in short native super interface, Private transient false protected synchronized function while volatile throws public final float with return. 予約語だけで文章作ってみた。予約語全部を含めるのはむずかしいなあ。
>>975 そのページに載っている状態だと全部Flashで作ってあるけどね。
本番はどうやってるのか知らないけどレイヤー作ってその大きさ
を変化させればどうにでもなると思うが。
979 :
978 :2006/09/17(日) 13:50:57 ID:???
無理でした。DIONは無理です。別のプロバイダの方お願いします
よーし。こんどはパパが1000ゲットしてらるからな、優。よく見てるんだぞ。
しかし、それがパパの声を聞いた最後になろうとは、優は夢にも思わなかったのでした・・・。
そ
selection.createRange().text って テーブルの中の文字は取得できない?
もう少しだ、優。自転車レースのフィニッシュの要領だ、わかるだろ? さっきはパパ、らりっちゃったな。あせってはダメだ。
うめ(´・ω・`)うめ
うま ↑ 間違った… 埋め
カウントダウン行くよー!! 10!
996 :
992 :2006/09/17(日) 20:56:42 ID:???
9! もう連投負けはしないぞ
10!
9!
100
_ _ ._ _ / /\/_\ ./_\\ \ / / / /_/ /\ / /_/ /\\ \ / / / \_ /\/ \_/\/ \ \ / / / \\./ .\\/ \ \ / /\/ . ̄  ̄ / /\ / / / ________ / / / / / / / ____ _/\ ./ / / / / / ./ /\____./ /\.\/ / / / / / / ./ / / / / ./ ̄ / / / / / / / / / / / ./ / / / / / / / / / ./ / ./ / / / / .\/ / / /___/ /__./ / / / \ \ / _ ̄ ̄____ /\ / /\/ \ \ /__/\ ̄ ̄ /__/ ./ / / / \/''\ \\/ ̄ ̄ ̄ ̄\.\/ \/ / \_/  ̄  ̄ \/ ポカーン
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。