相关疑难解决方法(0)

带有id的DOM树元素是否成为全局变量?

研究一个简单的HTMLElement包装器的想法我偶然发现了Internet Explorer和Chrome的以下内容:

对于DOM树中具有ID的给定HTMLElement,可以使用其ID作为变量名来检索div.所以对于一个喜欢的div

<div id="example">some text</div>
Run Code Online (Sandbox Code Playgroud)

Internet Explorer 8和Chrome中,您可以执行以下操作:

alert(example.innerHTML); //=> 'some text'
Run Code Online (Sandbox Code Playgroud)

要么

alert(window['example'].innerHTML); //=> 'some text'
Run Code Online (Sandbox Code Playgroud)

那么,这是否意味着DOM树中的每个元素都转换为全局命名空间中的变量?它是否也意味着可以使用它作为getElementById这些浏览器中方法的替代品?

javascript dom global-variables identifier getelementbyid

341
推荐指数
5
解决办法
4万
查看次数

从JS中的ids自动创建变量?

就在今天经过几年的javascript编程之后,我遇到了令我吃惊的东西.浏览器为每个具有id的元素创建对象.对象的名称将与id匹配.

所以如果你有:

<div id ="box"></div>
Run Code Online (Sandbox Code Playgroud)

你可以做:

alert(box); //[object HTMLDivElement]
Run Code Online (Sandbox Code Playgroud)

没有先为该变量分配任何内容.看演示.

由于某种原因,这似乎是在标准中,即使它在某些情况下可能会破坏代码.有一个开放的bug来结束这种行为,但我现在更感兴趣摆脱它.

你们知道是否有办法禁用它(严格的模式可能)?我是否过分重视?因为这看起来确实是一个坏主意.(它是由IE推出给你一个提示).

更新:似乎FF只在怪癖模式下执行此操作.像IE6 +和Chrome这样的其他浏览器可以立即实现.

javascript

36
推荐指数
2
解决办法
3382
查看次数