2017-07-03 19 views
6

にアクセスしながらwindow.elementと要素の違いは何私はブラウザはハローを区別する方法を理解したいとして、以下に与えられたコードDOM要素

http://jsfiddle.net/PH3t2/291/

var hello = "new hello"; 
 
console.log("variable hello : " + hello); // <-- prints "new hello" 
 
console.log(window.hello); // <-- logs HTML elements
<div class="mainWrapper"> 
 
    <div class="mainBox" id="hello"> 
 
    main 
 
    </div> 
 
    <div class="clear" id="hello"></div> 
 
</div>

の中window.hello

指定されたウィンドウは、文字列"new hello"ではなくHTML要素をどのように印刷しますか?

答えて

6

デフォルトでは、ブラウザがそのid属性をキーとwindowのプロパティなど、すべての要素を格納するため、問題がある - これは、HTMLは、あなたがた理由であるあなたが同じidを持つ複数の要素を持つことができない理由の一部であり、表示は無効です。

また、window.helloがElementオブジェクトを返すのはなぜですか?これは、HTMLの最初の<div>への参照です。

同様に、ブラウザでは、hello変数を定義するときに参照とは別に格納された値をwindow.hello要素に格納することがわかっています。このため、hello"new hello"文字列を返します。

+2

ここで重要な部分は、jsfiddleがコードをウィンドウonloadイベント内にラップするため、 'var hello'がローカル変数になることです。ラッパーを削除すると、 'window.hello'は変数を参照します:http://jsfiddle.net/PH3t2/292/ – JJJ