html元素id为javascript变量

sli*_*khi 12 html javascript dom

请考虑以下代码:

<html>
<head></head>
<body>
<div id='test' class='blah'>
  <a href='http://somesite.com/' id='someLink'>click!</a>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

所以我最近发现这创建了一个调用的javascript对象someLink,我可以用例如获取href属性的值someLink.href.我在最新的Chrome,FF和IE中对此进行了测试,它确实有效.

首先,这个"功能"到底有多长?我想可能有一段时间了,因为我已经知道多年来页面上html元素的ID必须是唯一的,如果你有多个元素共享相同的ID,最后一个元素会覆盖前一个元素,并且使用例如getElementById()将返回最后一个.但我从来没有真正理解为什么,但现在,把它视为"这是创造一个对象"的观点,这是有道理的.所以,只要能够使用id-name-as-javascript对象直接访问它...它有多久了?IE6时代?早些时候?

第二......我想这更像是一个讨论点而不是问题,但是... IMO这似乎不是一个非常好的"功能"......不是有一个DOM和包装器的重点功能,如getElementById(),给一些组织,更重要的是,减少名称空间问题?我不觉得我应该担心页面上的随机html元素会覆盖我的javascript变量(最近发生的事情,这就是我发现这个"功能"的原因).有谁知道为什么会这样,它背后的逻辑是什么?

Que*_*tin 10

首先,这个"功能"到底有多长?

如果我没记错的话,它是一个微软主义的IE 4.

其他一些浏览器已经添加了对它的支持,以便与依赖于它的编写错误的代码兼容.有些人可能只在怪异模式下支持它.

这似乎不是一个非常好的"功能"

正确.不要使用它.:)