[解決済み] IDを持つDOMツリー要素はグローバルプロパティになるのか?
質問
シンプルなアイデアを考えています
HTMLElement
ラッパーは、Internet ExplorerとMySQLのために、次のように偶然見つけました。
クローム
:
ある
HTMLElement
と
id
を DOM ツリーで取得することができます。
<div>
のプロパティとして、そのIDを変数名として、または
window
. そのため
<div>
のように
<div id="example">some text</div>
で インターネットエクスプローラー8 とChromeはできます。
alert(example.innerHTML); // Alerts "some text".
または
alert(window["example"].innerHTML); // Alerts "some text".
ということは
DOM ツリー内のすべての要素
は、グローバルオブジェクトのプロパティに変換されるのでしょうか?また、これを
getElementById
メソッドを使用することができますか?
解決方法を教えてください。
の見かけ上のプロパティとして「名前付き要素」が追加されることになります。
document
オブジェクトを作成します。これは本当に悪い考えで、要素名が
document
.
IE は、名前付き要素を
window
オブジェクトを作成します。これは二重の意味で悪いことです。
document
または
window
オブジェクトを使用することができます。
また、これらの要素はグローバルに近い変数として見えるということです。幸運なことに、この場合、本当のグローバルな
var
または
function
の宣言が影を落とすので、ここでは命名についてそれほど気にする必要はありませんが、もし名前が衝突するグローバル変数への代入を行おうとして、その宣言を忘れてしまった場合は、次のようになります。
var
IEでは、その値を要素自体に代入しようとしてエラーになります。
を省略することは、一般にバッドプラクティスと考えられています。
var
で表示されることに依存するのと同様に、名前付き要素が
window
またはグローバルとして使用することができます。このため
document.getElementById
の方が広くサポートされ、曖昧さもありません。もし型付けが嫌なら、もっと短い名前の些細なラッパー関数を書けばいい。いずれにせよ、idから要素へのルックアップ・キャッシュを使う意味はないでしょう。
getElementById
の呼び出しは、いずれにせよ迅速なルックアップを使用するため、要素が変更されたときに問題が発生するだけです。
id
またはドキュメントから追加/削除されます。
Opera が IE を真似た後、WebKit が加わり、今では以前は標準的でなかった名前付き要素を
document
プロパティに配置すること、そして以前はIEのみであった
window
は
存在
標準化
HTML5 のアプローチは、ブラウザの作者が私たちに与えたあらゆるひどい習慣を文書化し標準化することであり、それらを永遠にウェブの一部にすることです。そのため、Firefox 4 もこれをサポートする予定です。
名前付き要素」とは何ですか?すべての要素に
id
であるもの、および
name
つまり、フォーム、画像、アンカー、その他いくつかのもので、それ以外の無関係な
name
属性は、フォームの入力フィールドのコントロール名や
<param>
またはメタデータタイプで
<meta>
. '識別'
name
は避けるべきもので、代わりに
id
.
関連
-
Vue+ElementUIによる大規模なフォームの処理例
-
JavaScriptのクロージャの説明
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
jq は html ページとデータを動的に分割する。
-
[解決済み] JavaScript で DOM ノードのすべての子要素を削除する
-
[解決済み] CSSは常にJavascriptより優先されるべきか?
-
[解決済み] jQueryを使わずに "data-xxx "属性の要素をすべて選択する
-
[解決済み】HTML文字列をDOM要素に変換する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptの関数この指摘の問題を説明
-
fetch ネットワークリクエストラッパーの説明例
-
Vueにシンプルなメモ帳機能を実装
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】ExpressJS : res.redirect()が期待通りに動かない?
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)