Почему следующий код НЕ работает без атрибута id или name, указанного для элемента привязки?
<html>
<body>
<a href="#">First link</a>
<p>innerHTML of the first anchor:
<script>document.write(document.anchors[0].innerHTML);</script>
</p>
</body>
</html>
Но если я добавлю атрибут id (или name), например:
<a id="first" href="#">First link</a>
Он начинает работать.
Почему атрибут id или name так важен?Я не ссылаюсь на это в моем коде JavaScript.Я не использую "getElementById" или что-то еще, но он все еще хочет, чтобы был указан идентификатор.
PS Я тестировал только в IE7 (не самый лучший браузер, но у меня нет доступа к чему-то лучшему вмомент, и это не может помешать мне учиться:)
ОБНОВЛЕНИЕ:
Благодаря Рейносу, который дал мне идею HTMLCollection в своем ответе, я получил более глубокое пониманиечто происходит здесь, путем поиска в Интернете.
Когда мы используем коллекцию document.anchors
, мы на самом деле имеем в виду коллекцию элементов a
с атрибутом name
, которая создает элемент a
ведут себя как якорь , а не (только) как ссылка.
Нам не нужно указывать атрибут name
, если мы хотим ссылаться на a
элементы как ссылки .В этом случае нам просто нужно использовать другой экземпляр объекта HTMLCollection, который document.links
.
Таким образом, оригинальный код будет работать без атрибута имени, если мы изменим его на:
document.write(document.links[0].innerHTML);
Какое приятное чувство просветления!:)