重複の可能性:
IE/Chrome: DOM ツリー要素はグローバル変数ですか?
私は最近、id への直接参照を使用して、DOM の任意のオブジェクトを JavaScript で使用できることを発見しました。
<div id="layer">IM A LAYER</div>
<script>
alert(layer.innerHTML);
</script>
これが本当なら、getElementById メソッドを使用するとどのような利点が得られるでしょうか?
重複の可能性:
IE/Chrome: DOM ツリー要素はグローバル変数ですか?
私は最近、id への直接参照を使用して、DOM の任意のオブジェクトを JavaScript で使用できることを発見しました。
<div id="layer">IM A LAYER</div>
<script>
alert(layer.innerHTML);
</script>
これが本当なら、getElementById メソッドを使用するとどのような利点が得られるでしょうか?
DOM要素に直接アクセスすると、要素が存在しない場合にエラーが発生します。Wherasを使用getElementById
すると、が返されNULL
ます。
some-id
また、JS変数にはダッシュを含めることができないため、たとえば名前にダッシュが含まれている場合は、すべての要素に直接アクセスすることはできません( )。ただし、を使用してそれらにアクセスできますwindow['some-id']
。
たとえば、ページ内に別の以前のスクリプトがある場合
<script>
var layer = false; // or any other assignment
</script>
layer
への参照になりwindow.layer
、その後layer.innerHTML
失敗します。あなたと一緒document.getElementById
にこのトリッキーなエラーを回避します
これはid
、変数名に使用できる文字を含むの場合にのみ機能します。idのようなtext-11
場合、またはitem-key-21
それは機能しません。