基于id标识符访问HTML元素

时间:2013-12-29 22:36:22

标签: javascript dom

我正在玩javascript,我不明白这个小片段是如何工作的:

html&gt; <div id="foo_bar"></div>

javascript&gt; foo_bar.textContent = "Hello, world!";

结果&gt; <div id="foo_bar">Hello, world!</div>

foo_bar不是之前在代码中定义的变量。我的javascript代码中只有这一行 查看jsFiddle演示:http://jsfiddle.net/6W25e/

那真的发生了什么? 我一直认为没有像element.getElementById()这样的dom方法就无法访问dom元素。 有关于此行为的任何文档吗? (我的搜索在mdn上没有成功)

1 个答案:

答案 0 :(得分:0)

取自 bobInce

应该发生的是“命名元素”被添加为文档对象的明显属性。这是一个非常糟糕的主意,因为它允许元素名称与文档的真实属性冲突。

IE通过添加命名元素作为窗口对象的属性使情况变得更糟。这是非常糟糕的,因为现在您必须避免在您(或项目中的任何其他库代码)可能想要使用的文档或窗口对象的任何成员之后命名您的元素。

了解详情:Do DOM tree elements with ids become global variables?

这意味着这样做是非常糟糕的做法,有些浏览器不支持它,不适合这种做法的优秀做法。

会发生的情况是,某些浏览器会将全局变量作为窗口类,使窗口加载时可以立即访问它们。