Показать сообщение отдельно
  #1 (permalink)  
Старый 08.02.2015, 13:45
Аспирант
Посмотреть профиль Найти все сообщения от freee
 
Регистрация: 05.02.2015
Сообщений: 51

Ошибка в учебнике
Не знаю, куда запотсить, перенесите тему, если чо.

Вот тут
http://learn.javascript.ru/searching-elements-dom
Цитата:
Важно, что в документе может быть только один элемент с данным id. Конечно, можно нарушить это правило и создать много элементов с одинаковым идентификатором, но в таком случае поведение метода getElementById будет непредсказуемым.
естественно, семантически неверно использовать неуникальные идентификаторы, но технически, данное утверждение, о непредсказуемом поведении, по-моему, ошибочно. Во всяком случае, я ни разу не встречал UB в широко поддерживаемых на данный момент браузерах(в том числе ie8). Всегда возвращается первый элемент.
<html>
<head>
</head>
<body>

<div id="foo">foo</div>
<div id="foo">bar</div>
<div id="foo">baz</div>

<script>
alert(document.getElementById("foo").innerHTML)
</script>

</body>
</html>


И вот еще что, следом там идет
Цитата:
Браузер автоматически создаёт переменные для элементов с id, через которые к ним можно обратиться.

...

Это поведение соответствует стандарту. Оно существует, в первую очередь, для совместимости, как осколок далёкого прошлого.
это сугубое ИМХО, но это не "осколок", а вполне обоснованая фича, сделанная для удобства программиста, которая позволяет избежать лишней писанины типа myelement=document.getElementById("element"). К сожалению, в большинстве случаев использется именно последнее, а это ни что иное, как тупое дублирование кода.
BTW, может кто в курсе, что говорит последний стандарт по поводу данного поведения?

Последний раз редактировалось freee, 08.02.2015 в 16:28.
Ответить с цитированием