17

重複の可能性:
IE/Chrome: DOM ツリー要素はグローバル変数ですか?

私は最近、id への直接参照を使用して、DOM の任意のオブジェクトを JavaScript で使用できることを発見しました。

<div id="layer">IM A LAYER</div>
<script>
   alert(layer.innerHTML);
</script>

これが本当なら、getElementById メソッドを使用するとどのような利点が得られるでしょうか?

4

3 に答える 3

17

DOM要素に直接アクセスすると、要素が存在しない場合にエラーが発生します。Wherasを使用getElementByIdすると、が返されNULLます。

some-idまた、JS変数にはダッシュを含めることができないため、たとえば名前にダッシュが含まれている場合は、すべての要素に直接アクセスすることはできません( )。ただし、を使用してそれらにアクセスできますwindow['some-id']

于 2013-01-23T11:05:44.437 に答える
6

たとえば、ページ内に別の以前のスクリプトがある場合

<script>
var layer = false; // or any other assignment
</script>

layerへの参照になりwindow.layer、その後layer.innerHTML失敗します。あなたと一緒document.getElementByIdにこのトリッキーなエラーを回避します

于 2013-01-23T11:05:45.637 に答える
0

これはid、変数名に使用できる文字を含むの場合にのみ機能します。idのようなtext-11場合、またはitem-key-21それは機能しません。

于 2013-01-23T11:05:40.610 に答える