考虑下面的代码:HTML元素的ID作为JavaScript变量
<html>
<head></head>
<body>
<div id='test' class='blah'>
<a href='http://somesite.com/' id='someLink'>click!</a>
</div>
</body>
</html>
所以我刚刚发现,这将创建一个JavaScript对象调用someLink
,我可以例如获得href属性的值与someLink.href
。我在最新的Chrome,FF和IE中测试了它,并且它工作正常。
首先,这个“功能”到底有多长?我想可能有一段时间了,因为我已经知道多年以来,页面上html元素的ID必须是唯一的,并且如果确实有多个元素共享相同的ID,则最后一个元素覆盖前一个元素,并且例如使用getElementById()将返回最后一个。但我从来没有真正理解为什么,但现在,把它看作是“这是创造一个对象”的视角,这是有道理的。所以,只要能够使用id-name-as-javascript对象直接访问它......多久了? IE6时代?早些时候?
第二......我想这更像是一个讨论的问题,而不是问题,但...... IMO似乎并不是一个非常好的“特征”......是不是有点一个DOM和包装函数,如getElementById()
,给一些组织,更重要的是,减少命名空间问题?我不觉得我应该不必担心页面上的随机html元素覆盖我的javascript变量(最近发生的一些事情,这就是为什么我发现这个“功能”)。有没有人知道为什么这是现实,它背后的逻辑是什么?
“我已经知道多年以来,页面上html元素的ID必须是唯一的,并且如果确实有多个元素共享相同的ID,则最后一个元素覆盖前一个元素,并且使用例如getElementById()将返回最后一个“据我所知,'getElementById()'将返回**第一个**,而不是最后一个具有给定ID的元素;尽管它绝对不一致(或者至少不应该依赖于一致性)。 – 2012-03-16 15:44:47
你用第二点击打头部。它不是一个很好的特性,这就是为什么它永远被弃用,如果你使用''use strict''指令,它将不会工作。 – zzzzBov 2012-03-16 15:45:14