Рассмотрим следующий код:
<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 на странице должны быть уникальными, и если у вас есть более одного элемента, разделяющего один и тот же идентификатор, последний перезаписывает предыдущие и используя, например, getElementById() вернет последний. Но я никогда не понимал, почему, но теперь, рассматривая это как перспективу "это создание объекта", это имеет смысл. Итак, насколько можно напрямую обращаться к нему с помощью объекта id-name-as-javascript... как долго это было? IE6 эпохи? Ранее?
2nd... Я думаю, что это скорее точка обсуждения, чем вопрос, но... IMO это не похоже на очень хорошую "особенность"... Не все ли смысл иметь DOM и обертки, такие как getElementById()
, чтобы дать некоторую организацию и, что более важно, сократить проблемы пространства имен? Я не чувствую, что мне следует беспокоиться о случайных элементах html на странице, перезаписывающей переменные javascript (что-то, что произошло недавно, и именно поэтому я обнаружил эту "функцию" ). Кто-нибудь знает, почему это так, как есть, какова его логика?