開発をしていてずっと気になっていたのですが、document.all("")とdocument.getElementByIdのアクセス速度って違うのでしょうか?
前者は、documentにあるすべてのタグを見に行くのに対して、後者は、ピンポイントで指定しているから、ひょっとしたら後者の方が早い気がするのですが。。。
論より証拠ということで、ソースを作って実行してみたらところ、アクセス速度に違いはありませんでした。
以下、ソースです。
<CFOUTPUT> <script type="text/javascript"> function lf_kakunin(num){ var note; dateObj = new Date(); note = "開始時刻は" + dateObj.toLocaleTimeString() + ":"+ dateObj.getMilliseconds() + "です"; document.getElementById("TimeStamp1").innerText = note; for(i=1; i<=1500; i++){ if(document.all["hoge_"+i].value == num){ note = "見つかった時刻は" + dateObj.toLocaleTimeString() + ":"+ dateObj.getMilliseconds() + "です"; document.getElementById("TimeStamp2").innerText = note; break; } }
note = "開始時刻は" + dateObj.toLocaleTimeString() + ":" + dateObj.getMilliseconds() + "です"; document.getElementById("TimeStamp3").innerText = note; for(i=1; i<=1500; i++){ if(document.getElementById("id_"+i).value == num){ note = "見つかった時刻は" + dateObj.toLocaleTimeString() + ":" + dateObj.getMilliseconds() + "です"; document.getElementById("TimeStamp4").innerText = note; break; } } } </script>
<div id="TimeStamp1"></div> <div id="TimeStamp2"></div> <div id="TimeStamp3"></div> <div id="TimeStamp4"></div>
<form name="FRM_MAIN" action="" method="post"> <CFLOOP index="i" FROM="1" TO="1500"> <input type="text" value="#i#" name="hoge_#i#" id="id_#i#"> <input type="button" value="Run" onClick="lf_kakunin(#i#);"> <br> </CFLOOP> </form> </CFOUTPUT> |
アクセス速度に違いがないのですから、あまり意識せずに開発をしてもいいのかもしれませんね。
おー、速度には違い無いのか……
返信削除でも確かdocument.allってIEが独自に
実装したものだから多分使わない方が無難だよね……
まぁ、思い返せば始めたやった仕事では
もうallの嵐だったんだけどねー……
>でも確かdocument.allってIEが独自に
返信削除実装したものだから多分使わない方が無難だよね……
document.all("")に何か抵抗感を感じちゃって、製造時にはならべく使わずに$()でアクセスしているけどね。
なぜか、わからないんだけど、仕事ではdocument.allがものすごく使われているよね。
>もうallの嵐だったんだけどねー……
なつかしいね!!
JSの半分近くは、あれで埋め尽くされているんじゃーねーと思ってしまうほどだね。