2017-07-03 81 views
6

我想了解瀏覽器你好如何區分和window.hello在下面給出的代碼什麼是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>

指定的窗口如何打印HTML元素而不是字符串"new hello"

回答

6

問題是因爲默認情況下瀏覽器中存儲的所有元素,通過他們的id屬性鍵入的window的性能 - 這是你不能有相同的id多個元素的原因,這就是爲什麼HTML你已經部分顯示無效。

這也是爲什麼window.hello返回一個Element對象 - 它是對HTML中第一個<div>的引用。

同樣,瀏覽器知道當你定義hello變量時,你想要一個與參考值分開存儲的值,它必須是window.hello元素。這就是爲什麼hello返回"new hello"字符串。

+2

這裏的關鍵部分是,jsfiddle將代碼包裝在窗口onload事件中,所以'var hello'變成了局部變量。如果你刪除包裝器,'window.hello'引用這個變量:http://jsfiddle.net/PH3t2/292/ – JJJ

相關問題