为了账号安全,请及时绑定邮箱和手机立即绑定

是否有一个规范,元素的id应该成为全局变量?

是否有一个规范,元素的id应该成为全局变量?

ABOUTYOU 2019-07-01 10:35:06
是否有一个规范,元素的id应该成为全局变量?如果我有<div id='a'>在Chrome中,然后在javascript中,我可以做到a.stuff())就好像a是一个全局变量)。但是,这并不适用于Firefox-我需要使用document.getElementById('a').什么是正确行为这里?(根据W3规格即)另外,如果我有一个带有id的div,那么Chrome将如何解决这个歧义呢?a但是有一个名为a在我的剧本里也是。行为会是随机的和古怪的吗?以及由连字符(“-”)、冒号(“:”)和句点(“)组成的id元素是如何实现的。翻译(好的,我知道可以用document.getElementById但是浏览器将如何将其转换为表示它们的全局变量)
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

从早期开始,IE就创建了通过名称或id属性值引用元素的全局变量。这从来不是一个好主意,但被其他浏览器复制,以便与为IE创建的站点兼容。

这是个坏主意,不应该被复制或使用。

编辑

回答你的额外问题:

.如果我的脚本中有一个带有id的div,但是有一个名为a的全局变量,那么Chrome将如何解决这个歧义。

在IE(它引入了这种行为)中,如果一个全局变量以与元素id或名称相同的名称声明,它将优先。然而,未声明的全球并不是这样运作的。在Chrome中测试这一点不需要太多时间(我已经做过了,但我不会给你答案)。

以及由连字符(“-”)、冒号(“:”)和句点(“)组成的id元素是如何实现的。被翻译(好的,我知道可以用document.getElementById访问它们,但是浏览器将如何将它们转换成表示它们的全局变量)

与任何非有效标识符的对象属性名称完全相同-方括号表示法(即窗口[‘name-或-id’])。


查看完整回答
反对 回复 2019-07-01
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

从技术上讲,这个问题是意见,但这是一个很好的问题。

它也是这样做的,它已经引起了一些人的头痛。

命名规则JavaScript中的变量HTML中的ID是不同的。我看不出这有多好。

例如,在这个页面上有一个ID为“通知-容器”的元素。这根本不是一个有效的JavaScript名称。

还有,这些名字是什么时候绑定的?如果内联脚本声明了一个变量,那么元素将在稍后出现,哪个元素具有优先级?

不能保持一致。


查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 535 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信