我认为JS访问具有id的元素的标准方法是使用getElementById。如果人们喜欢使用jQuery,那么他们可能会使用他们的选择器。但最近我遇到了一个非常简单的代码示例,如下所示:
HTML:
<div id="h">Hello</div>
JS:
h.innerHTML = "Too bad";
这是唯一的代码,没有其他变量声明,只供人们知道 我们如何能够像访问Javascript对象一样访问div元素?
P.S。 :代码示例有效。
答案 0 :(得分:8)
我们如何能够像访问Javascript那样访问div元素 对象
id
默认创建为全局对象的属性(在全局上下文中)。
如果你<div id="h22">Hello</div>
,它将创建一个h22
根据spec,
否则返回一个以Document节点为根的HTMLCollection filter仅匹配名称为name的命名对象。 (根据定义, 这些都是元素。)
具有id内容属性,其值为name的HTML元素。
因此,window
可以在规范中指定的顺序中确定从哪里选择值。
答案 1 :(得分:2)
引用JavaScript The Definitive Guide:
如果使用id属性在HTML文档中命名元素,并且如果使用 Window对象还没有该名称的属性,Window对象是 给定一个不可数的属性,其名称是
find . -name "File*" | xargs cut -d, -f3 | sort | uniq -c | sort -nr
属性的值,其名称是表示该文档元素的HTMLElement对象。Window对象充当客户端JavaScript中作用域链顶部的全局对象,因此这意味着您在HTML文档中使用的id属性将成为脚本可访问的全局变量。如果您的文档包含元素
id
,则可以使用全局变量<button id="okay"/>
来引用该元素。
但也有一些例外。如果okay
对象已经有一个名称在html文档中也用作window
属性的属性,则它将不能作为window对象的属性使用。
第二,如果你有一个可用作窗口属性的id,并且我们声明了一个同名的变量,那么我们显式创建的变量将覆盖包含id的窗口属性。
答案 2 :(得分:1)
实际证明上述答案......
<强> HTML 强>
<div id="foo">
<p>bar</p>
</div>
<强>使用Javascript:强>
alert(window.foo);
console.log(window.foo.innerHTML);
<强>提醒:强>
[object HTMLDivElement]
<强>控制台:强>
<p>bar</p>