![Why is Accessing DOM Elements via Global Properties Discouraged?](https://img.php.cn/upload/article/000/000/000/173490361449828.jpg)
グローバル プロパティと ID 付きの DOM ツリー要素
Internet Explorer や Chrome などの Web ブラウザでは、割り当てられた ID を持つ DOM ツリー内の要素にグローバル オブジェクトを通じてアクセスできます。 ID を変数名またはウィンドウ オブジェクトのプロパティとして使用します。たとえば、ID が「example」の要素は、
alert(example.innerHTML); // Alerts "some text".
ログイン後にコピー
または
alert(window["example"].innerHTML); // Alerts "some text".
ログイン後にコピー
を使用して取得できます。ただし、この動作は、次のような理由から推奨されません。
-
ネイティブ プロパティとの衝突: 名前付き要素はドキュメント オブジェクトのプロパティになり、実際のプロパティと矛盾する可能性があります。 IE は、名前付き要素をウィンドウ オブジェクトのプロパティとして追加することでこれをさらに複雑にし、既存のメンバーと衝突する可能性があります。
-
グローバル スコープの可視性: これらの要素は、グローバルのような変数として表示されます。実際のグローバル変数はコード内でそれらをシャドウしますが、名前が衝突するグローバル変数への代入で var 宣言を省略すると、要素の値が誤って変更される可能性があります。
-
ブラウザ間でのサポートの欠如: IE、Chrome のみOpera は当初この動作をサポートしていたため、異なる動作間で一貫性がなくなりました。
-
HTML5 での非推奨: HTML5 仕様ではこの動作が標準化され、Firefox にも拡張されています。ただし、ウィンドウ上またはグローバルとして表示される名前付き要素に依存することは依然として悪い習慣であると考えられています。
代わりに、DOM ツリーから要素を取得するために標準化された getElementById メソッドを使用することをお勧めします。広くサポートされており、曖昧さは少なくなります。
以上がグローバル プロパティを介して DOM 要素にアクセスすることが推奨されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。