手机版

js DOM元素ID是一个全局变量

时间:2021-10-08 来源:互联网 编辑:宝哥软件园 浏览:

标准HTML5规范文档指出:如果一个元素满足以下两个规则中的任何一个,那么窗口对象中必须有对应的属性,属性值就是这个对象。如果一个元素有一个标识属性,该标识属性的属性值将成为窗口对象的属性名。如果元素有名称属性,名称属性的属性值将成为窗口对象的属性名。但是,这个元素的标签名必须是:a、applet、area、embed、form、frame、frameset、iframe、img和object中的一个。我们举个例子。假设有一页。该页面包含一个ID属性为“foo”的div元素。复制的代码如下: div id='foo'/div。这样,可以通过window.foo(像其他窗口属性一样)或全局变量foo访问上面的div元素。例如,在Chrome控制台中,您可以这样做。复制代码如下:window true foo div id=' foo '/div Firefox(14)中的:' foo '的工作方式略有不同。复制代码如下:window中的: ' foo ' foo//的false类型这个全局变量是真实的吗?对象//错误控制台输出以下警告。//全局范围内id/name引用的元素。//使用W3C标准文档。错误控制台输出以下警告。//全局作用域中标识/名称引用的元素。//改用W3C standard document . getelementbyid()。window true copy代码中的“foo”如下:window false类型的foo//中的:“foo”这个全局变量是真实的吗?对象//错误控制台输出以下警告。//全局范围内id/name引用的元素。//使用W3C标准文档。相反。foo[对象html dive element]//错误控制台输出以下警告。//全局范围内id/name引用的元素。//改用W3C标准文档. getElementByid()。窗户里的“foo”是真的吗?这是怎么回事?初始化时,窗口没有属性foo。但是,当第一次访问这个属性时(直接通过属性window.foo或通过全局变量foo),它将被自动创建。译者注:我在火狐14、15和18中没有发现警告,但是在火狐12测试中有警告。

【注意,示例中的代码只有通过网页中的脚本标签运行才能生效,而不能通过终端运行。这是因为终端在处理全局对象时使用了不同的方法。]译者注:我在Firebug中尝试了示例中的代码,没有发现任何区别。一旦您尝试读取foo的值,尽管div元素将正常返回,但同时在错误控制台中会出现警告。告诉你不要那样做。显然,这个警告是正确的。您可以在调试终端时使用此功能,但在实际代码中,您不应该使用。Cody Lindley需要编写一个jsPerf测试,比较通过全局变量访问foo和通过window.foo访问foo的性能差异,有趣的是,在Firefox中只有访问window.foo更快。

版权声明:js DOM元素ID是一个全局变量是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。