HTML 要素 ID のグローバル変数アクセス
グローバル変数を使用した HTML 要素 ID へのアクセスの適切な処理に関して疑問が生じます。指定された例では、Chrome では a.stuff() 経由で ID「a」の要素に直接アクセスできますが、Firefox では document.getElementById('a').
仕様
HTML4 仕様では、この動作の概要が明示的に規定されていません。ただし、要素 ID をグローバル変数にすることも禁止されません。 WHATWG HTML 仕様では、要素 ID のグローバル アクセスをレガシーまたは互換性の問題として考慮し、現在この動作を義務付けています。
実装
Chrome や Firefox などの主要なブラウザ ( quirks モード)、互換性の理由からこの動作が採用されています。ただし、Firefox では、厳密モードでグローバル変数を介して要素に直接アクセスすることもできますが、その実装は信頼できない可能性があります。
曖昧さ
グローバル変数 a とID「a」の HTML 要素が存在する場合、動作は実行コンテキストによって異なります。ほとんどの場合、JavaScript は HTML 要素よりもグローバル変数 a を優先します。ただし、要素 ID にグローバル変数を使用することは、競合や名前空間汚染の可能性があるため、一般に嫌われます。
HTML ID 内の特殊文字
HTML ID にはハイフン (- )、コロン (:)、およびピリオド (.) は、JavaScript 識別子には使用できません。グローバル変数を介してこれらの要素にアクセスするには、ブラウザーがそれらを変換します。たとえば、ID が「foo-bar」の要素は、グローバル変数 foo-bar を介してアクセスできる可能性があります。
結論
要素 ID をグローバルにする実践では、変数は歴史的にサポートされていますが、HTML4 仕様では明示的に指定されていません。 WHATWG HTML 仕様ではこの動作が必要ですが、要素にアクセスするには document.getElementById() またはその他のメソッドを使用することが推奨されています。混乱が生じたり、グローバル名前空間内の他の変数と競合する可能性があるため、要素 ID にグローバル変数を使用することは避けてください。
以上がJavaScript のグローバル変数として HTML 要素 ID に直接アクセスできる場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。