@newaitix

Почему элемент dom доступен в переменной по id?

Если у меня имеется блок
<div id="name"></div>
я могу обратиться к нему вот так
name
или
window.name

То есть блок с идентификатором "name" будит доступен в переменной name, с идентификатором body в переменной body и так далее. К любому элементу можно осуществить доступ по его идентификатору через переменную с соответствующим идентификатору названием.
И это на любом сайте так.
Почему?
Для меня это нонсенс.
  • Вопрос задан
  • 206 просмотров
Решения вопроса 4
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
stackoverflow.com/questions/3434278/do-dom-tree-el...

не совсем так. Скажем если вы явно укажите пропертю в window то она перекрое это поведение.
Ответ написан
Комментировать
Если для именования HTML элемента используется атрибут id и если объект window еще не имеет свойства имя которого совпадает со значением атрибута id, то объект window получает не перечисляемое свойство с именем соответствующим значению атрибута id, значением которого становится объект HTMLElement, представляющий этот элемент документа. Таким образом значения атрибута id в HTML документах становятся глобальными переменными, доступными сценариям. Если например документ включает элемент <button id="okay">, то на него можно сослаться с помощью глобальной переменной "okay". ©Дэвид Флэнаган.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Это поведение соответствует стандарту. Оно существует, в первую очередь, для совместимости, как осколок далёкого прошлого и не очень приветствуется, поскольку использует глобальные переменные. Браузер пытается помочь нам, смешивая пространства имён JS и DOM, но при этом возможны конфликты.

https://learn.javascript.ru/searching-elements-dom...
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Это наследие времен первых версий браузеров. Оставлено в целях совместимости, чтобы сайты, на которые никто не заходит уже 15 лет, продолжали работать в современных браузерах.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 11:54
50000 руб./за проект
23 нояб. 2024, в 07:32
75000 руб./за проект
28 нояб. 2024, в 11:38
5000 руб./за проект