2017-07-03 80 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

相关问题