Книга: Выразительный JavaScript
Поиск элементов
Поиск элементов
Часто бывает полезным ориентироваться по этим ссылкам между родителями, детьми и родственными узлами и проходить по всему документу. Однако если нам нужен конкретный узел в документе, очень неудобно идти по нему, начиная с document.body
и тупо перебирая жёстко заданный в коде путь. Поступая так, мы вносим в программу допущения о точной структуре документа – а её мы позже можем захотеть поменять. Другой усложняющий фактор – текстовые узлы создаются даже для пробелов между узлами. В документе из примера у тега body
не три дочерних (h1
и два p), а целых семь: эти три плюс пробелы до, после и между ними.
Так что если нам нужен атрибут href
из ссылки, мы не должны писать в программе что-то вроде: «второй ребёнок шестого ребёнка document.body». Лучше бы, если б мы могли сказать: «первая ссылка в документе». И так можно сделать:
var link = document.body.getElementsByTagName("a")[0];
console.log(link.href);
У всех узлов-элементов есть метод getElementsByTagName
, собирающий все элементы с данным тегом, которые происходят (прямые или не прямые потомки) от этого узла, и возвращает его в виде массивоподобного объекта.
Чтобы найти конкретный узел, можно задать ему атрибут id
и использовать метод document.getElementById
.
<p>Мой страус Гертруда:</p>
<p><img src="img/ostrich.png"></p>
<script>
var ostrich = document.getElementById("gertrude");
console.log(ostrich.src);
</script>
Третий метод – getElementsByClassName
, который, как и getElementsByTagName
, ищет в содержимом узла-элемента и возвращает все элементы, содержащие в своём классе заданную строчку.
- Состояние элементов каталога
- Поиск и удаление записи из книжки
- Вставка в дереве бинарного поиска
- Поиск элементов в коллекции ViewData
- Создание свободно позиционируемых элементов
- 13.3.4. Поиск и замена текста
- Фильтры и поиск
- 1.3.1. Индексирование сайта в поисковых системах
- Добавление, изменение и удаление элементов списка
- Восстановление элементов списка из Корзины
- Глава 4 Поиск и выбор идеи
- Глава 1 Поиск (Найдется всё!)