Действительно ли мне нужно называть getElementById()?

Возможный дубликат:
IE/Chrome: существуют ли здесь элементы дерева дерева DOM?

Я просто наткнулся на неожиданное, но полезное поведение в браузере: он создает переменную для каждого элемента с идентификатором в моем html-коде. Поэтому, когда у меня есть:

<div id="ohlala"> ... </div>

браузер, похоже, запускает этот код за сценой:

var ohlala = document.getElementById("ohlala");

поэтому я могу легко изменить текст этого элемента:

ohlala.innerHTML="test"

Попробуйте онлайн: http://jsfiddle.net/Facby/ Вопрос в том, зачем мне самому писать бит document.getElementById()? Насколько переносимым является этот код? Я пробовал в Opera, FireFox и Chrome, и он работает! Могу ли я полагаться на эту функциональность? Всегда ли браузер создает переменные для каждого элемента с идентификатором? В этом случае я должен быть более осторожным в отношении имен, которые используются в моем javascript-коде, чтобы не противоречить аналогичным идентификаторам из HTML, правильно?

Ответ 1

При создании элементов с идентификаторами объект "window" получает определенные атрибуты, поэтому вы можете использовать переменные напрямую, это поведение устарело и обычно написано так: window.ohlala.innerHTML = "...", это поведение сохраняется браузерами для совместимость с некоторым старым кодом на веб-сайтах, но не рекомендуется использовать его на современных веб-сайтах, всегда используйте метод .getElementById(), этот метод является частью стандарта W3C, и вы можете использовать его во всех современных браузерах, в некоторых старые версии браузера и < IE7 это не сработает. Подробнее о DOM (Document Object Model) можно узнать здесь: https://developer.mozilla.org/en-US/docs/DOM