猿问

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

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

如果我有<div id='a'>在Chrome中,然后在javascript中,我可以做到a.stuff())就好像a是一个全局变量)。

但是,这并不适用于Firefox-我需要使用document.getElementById('a').

什么是正确行为这里?(根据W3规格即)

另外,如果我有一个带有id的div,那么Chrome将如何解决这个歧义呢?a但是有一个名为a在我的剧本里也是。行为会是随机的和古怪的吗?

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


ABOUTYOU
浏览 536回答 3
3回答

缥缈止盈

从早期开始,IE就创建了通过名称或id属性值引用元素的全局变量。这从来不是一个好主意,但被其他浏览器复制,以便与为IE创建的站点兼容。这是个坏主意,不应该被复制或使用。编辑回答你的额外问题:.如果我的脚本中有一个带有id的div,但是有一个名为a的全局变量,那么Chrome将如何解决这个歧义。在IE(它引入了这种行为)中,如果一个全局变量以与元素id或名称相同的名称声明,它将优先。然而,未声明的全球并不是这样运作的。在Chrome中测试这一点不需要太多时间(我已经做过了,但我不会给你答案)。以及由连字符(“-”)、冒号(“:”)和句点(“)组成的id元素是如何实现的。被翻译(好的,我知道可以用document.getElementById访问它们,但是浏览器将如何将它们转换成表示它们的全局变量)与任何非有效标识符的对象属性名称完全相同-方括号表示法(即窗口[‘name-或-id’])。

慕标琳琳

从技术上讲,这个问题是意见,但这是一个很好的问题。它也是这样做的,它已经引起了一些人的头痛。命名规则JavaScript中的变量和HTML中的ID是不同的。我看不出这有多好。例如,在这个页面上有一个ID为“通知-容器”的元素。这根本不是一个有效的JavaScript名称。还有,这些名字是什么时候绑定的?如果内联脚本声明了一个变量,那么元素将在稍后出现,哪个元素具有优先级?不能保持一致。
随时随地看视频慕课网APP
我要回答