Рассмотрим следующий код:
<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? Ранее
2-й ... Я думаю, это скорее предмет для обсуждения, чем вопрос, но ... ИМО, это не очень хорошая "особенность" ... Не в этом ли смысл иметь Функции DOM и оболочки, такие как getElementById()
, чтобы придать некоторую организацию и, что более важно, сократить проблемы с пространством имен? Я не думаю, что мне нужно беспокоиться о случайных HTML-элементах на странице, перезаписывающих мои переменные javascript (что-то недавно произошло, поэтому я обнаружил эту «особенность»). Кто-нибудь знает , почему это так, как есть, что за этим стоит?