Js родительский элемент: Node.parentElement — Интерфейсы веб API

Содержание

Как узнать родителя элемента js

Node.parentElement

Свойство Node.parentElement только для чтения, возвращает родителя узла DOM Element , или null если узел не имеет родителя, или его родитель не DOM Element .

Синтаксис

parentElement это родительский элемент текущего узла. Это всегда объект DOM Element , или null .

Пример

Совместимость с браузерами

BCD tables only load in the browser

В некоторых браузерах, свойство parentElement определено только для узлов, которые сами Element . В частности, не определено для текстовых узлов.

Навигация по DOM элементам

Обход DOM или, проще говоря, навигация по DOM элементам — это работа со свойствами родительских, дочерних и соседних DOM элементов с помощью JavaScript.

В качестве примера мы будем использовать следующий код:

В браузере файл будет выглядеть следующим образом:

Корневые узлы

Объект document — это корень каждого узла в DOM. Следующий уровень — это объект window , который включает в себя закладки браузера, тулбары, функции promt и alert. Мы будем работать с DOM и, таким образом, с объектом document , который включает в себя все, что находится внутри window .

По умолчанию каждый документ содержит html , head , и body .

Проверить содержимое каждого элемента можно, набрав в консоли:

Родительские узлы

Как упоминалось ранее, узлы в DOM делятся на родительские, дочерние и соседние в зависимости от их связи с другими узлами. Родитель конкретного узла — это узел, который находится на уровень выше в иерархии DOM.

В нашем примере:

  • html является родителем head , body , и script
  • body является родителем h2 , h3 , p и ul , но не li , так как li на два уровня ниже body

Мы можем проверить родителя p элемента с помощью parentNode свойства. Так как мы присвоили p переменной, необходимо просто ввести:

Можно даже подняться на два уровня выше:

Дочерние узлы

Дочерние элементы узла — это узлы, которые находятся на уровень ниже. Если узлы находятся ниже еще на один уровень вложенности, они называются предками.

В данной статье мы будем работать со следующими свойствами: childNodes , firstChild , lastChild , children , firstElementChild и lastElementChild .

Начнем со свойства childNodes , которое вернет список каждого дочернего элемента данного узла:

Возможно, вы ожидали, что вернется только три элемента li ? Текстовые узлы на самом деле пробелы, вызванные отступами между элементами, которые DOM воспринимает как узлы. Их не будет видно во вкладке Elements, так как консоль разработчика удаляет эти узлы автоматически.

По этой причине, если мы попытаемся изменить цвет фона первого дочернего узла, возникнет ошибка, так как первый дочерний элемент — это текст.

Когда нам необходимо работать только с узлами элементов, можно использовать children , firstElement и lastElementChild .

ul.children вернет только три li элемента.

Для того, чтобы изменить только первый элемент li , используйте:

Так выглядит обновленная страница:

Если необходимо изменить все четыре дочерних элемента, вы можете использовать for . . of цикл следующим образом:

Теперь все дочерние элементы изменили цвет фона:

Если посмотреть на элемент p , мы увидим, что он содержит как текст, так и другой элемент (тег strong ).

Свойство childNodes полезно, когда необходимо получить доступ к информации.

Как childNodes , так и children возвращают не стандартный JavaScript массив (со всеми методами и свойствами), а объект, подобный массиву. Однако, как и с массивом, доступ к узлам можно получить через номер индекса или даже найти свойство length .

В этом коде мы получаем доступ к последнему дочернему элементу li из четырех элементов ul в body и применяем стили.

Используя свойства дочерних и родительских элементов, можно вернуть любой узел из DOM!

Соседние элементы

Подробнее рассмотрим соседние элементы. Соседние элементы узла — это узлы, находящиеся на одном и том же уровне в DOM. Это не обязательно узлы одного типа — текстовые узлы, узлы элементов или комментариев. Свойства, с которыми часто работают в такой ситуации — это nextSibling , previousSibling , nextElementSibling и previousElementSibling .

Свойства соседних элементов работают таким же образом, как и дочерних: previousSibling и nextSibling вернет следующий узел, который сразу же предшествует или следует за определенным узлом; и previousElementSibling , и nextElementSibling получат только узлы элемента.

Получим средний элемент списка ul :

Также воспользуемся свойствами соседнего элемента для получения доступа к следующему и предыдущему элементам (избегая текстовых пробелов).

Изменения будут выглядеть следующим образом:

В следующей финальной части мы рассмотрим, как изменять DOM, управлять узлами, удалять узлы из DOM. Также мы подробнее коснемся изменения классов, атрибутов и стилей.

JavaScript | Как получить родителя?

Простая разметка — два div два p — HTML

Мы хотим получить родителя для элемента < p >AAAA</ p >. Как его узнать?

Для начала получим сам элемент <p>AAAA</p>

Получили второй элемент p — JavaScript

Теперь ищем родителя. В этом нам поможет «Объектная модель документа» (DOM). В стандарте DOM есть «Интерфейс Node». В этом интерфейсе есть атрибут, который называется «parentNode» — он возвращает узел родителя. Воспользуемся им:

Применение атрибута parentNode — JavaScript

Мы получили родителя

Альтернатива

В «Интерфейсе Node» есть атрибут, который называется «parentElement» — он возвращает элемент родителя. Воспользуемся им:

Применение атрибута parentElement — JavaScript

Element — JavaScript — Дока

  1. Кратко
  2. Как пишется
  3. Как это понять
    1. 💡 Свойства, связанные с HTML-атрибутами
    2. 💡 Свойства и методы, связанные с DOM
    3. 💡 Свойства с информацией о содержимом
  4. На практике
    1. Николай Лопин советует

Кратко

Секция статьи «Кратко»

Элемент — это кусочек HTML в DOM-дереве. Браузер создаёт DOM для взаимодействия между JavaScript и HTML. Каждый HTML-тег при этом превращается в элемент DOM. Ещё такие элементы называют узлами.

Из DOM можно получить элемент и изменить его. Браузер заметит изменения и отобразит их на странице.

Как пишется

Секция статьи «Как пишется»

Например, можно поменять выравнивание у элемента h2:

// получаем элемент из DOMconst element = document.getElementsByTagName('h2')// после выполнения этого кода h2 будет выравнивать текст по центруelement.align = 'center'// меняем цвет шрифта на красныйelement.style.color = 'red'
          // получаем элемент из DOM
const element = document.getElementsByTagName('h2')
// после выполнения этого кода h2 будет выравнивать текст по центру
element.align = 'center'
// меняем цвет шрифта на красный
element.style.color = 'red'

Как это понять

Секция статьи «Как это понять»

HTML-элементы содержат свойства, которые можно разделить на группы:

  • свойства, связанные с HTML-атрибутами: id, классы, стили и так далее;
  • свойства и методы связанные с обходом DOM: получение дочерних элементов, родителя, соседей;
  • информация о содержимом;
  • специфические свойства элемента.

Первые три группы свойств есть у всех элементов. Специфические свойства отличаются в зависимости от типа элемента. Например, у полей ввода есть свойства, которых нет у параграфов и блоков: value, type и другие.

💡 Свойства, связанные с HTML-атрибутами

Секция статьи «💡 Свойства, связанные с HTML-атрибутами»

Читать и записывать значения HTML-атрибутов можно при помощи свойств элемента. Название обычно совпадает с названием атрибута:

  • id — получить идентификатор элемента.
  • className — список классов в HTML-атрибуте class.
const element = document.getElementsByTagName('div')[0]// напечатать список классов в консольconsole.log(element.className)// установить свой классelement.className = 'hacked'
          
const element = document.getElementsByTagName('div')[0] // напечатать список классов в консоль console.log(element.className) // установить свой класс element. className = 'hacked'
  • style — добавить стили. Стили добавляются так же с помощью свойств. Свойства именуются по аналогии с CSS-свойствами:
const element = document.getElementsByTagName('div')[0]// CSS-свойство background-colorelement.style.backgroundColor = 'beige'// CSS-свойство colorelement.style.color = 'gray'// CSS-свойство margin-topelement.style.marginTop = '20px'
          const element = document.getElementsByTagName('div')[0]
// CSS-свойство background-color
element.style.backgroundColor = 'beige'
// CSS-свойство color
element.style.color = 'gray'
// CSS-свойство margin-top
element.style.marginTop = '20px'

💡 Свойства и методы, связанные с DOM

Секция статьи «💡 Свойства и методы, связанные с DOM»
  • children — список дочерних элементов;
  • parentElement — получить родительский элемент;
  • nextElementSibling и previousElementSibling — получить следующий/предыдущий узел-сосед:
Открыть демо в новой вкладке
  • getElementsByClassName() — поиск среди дочерних элементов по названию класса;
  • getElementsByTagName() — поиск среди дочерних элементов по названию тега;
  • querySelector() — поиск первого дочернего элемента, подходящего под CSS-селектор;
  • querySelectorAll() — поиск всех дочерних элементов подходящих под CSS-селектор;

С помощью этих свойств и методов можно перемещаться по дереву и даже обойти все его элементы, если это нужно.

💡 Свойства с информацией о содержимом

Секция статьи «💡 Свойства с информацией о содержимом»
  • innerHTML — это свойство возвращает HTML-код всего, что вложено в текущий элемент. При записи в это свойство, предыдущее содержимое будет затёрто. Страница отобразит новое содержимое:
const divElement = document.getElementsByTagName('div')[0]divElement.innerHTML = '<p>Добавлен из кода</p>'// после выполнения этого кода, на странице отобразится параграф с указанным текстом
          const divElement = document.getElementsByTagName('div')[0]
divElement.innerHTML = '<p>Добавлен из кода</p>'
// после выполнения этого кода, на странице отобразится параграф с указанным текстом
  • outerHTML — это свойство возвращает HTML-код текущего элемента и всего, что в него вложено. При записи в это свойство, предыдущее содержимое будет затёрто.
  • textContent — свойство, возвращает текст всех вложенных узлов без HTML-тегов.

Почувствуй разницу на демо:

Открыть демо в новой вкладке

На практике

Секция статьи «На практике»

Николай Лопин советует

Секция статьи «Николай Лопин советует»

🛠 Если нужно добавить текст в элемент, то всегда используйте свойство textContent. Другие свойства обрабатывают HTML, это может привести к дырам в безопасности.

🛠 Для работы с классами элемента есть удобные методы, доступные через свойство classList:

  • добавить класс — метод add().
  • удалить класс — метод remove().
const element = document.getElementsByTagName('div')[0]element.classList.add('hello')element.classList.remove('bye')
          
const element = document.getElementsByTagName('div')[0] element. classList.add('hello') element.classList.remove('bye')

🛠 В HTML часто используют data-атрибуты. Они используются, когда нужно передать данные через HTML. Например, когда сервер собирает стартовый HTML, он может поместить значения в data-атрибуты. Фронтендер затем может использовать их, вместо того, чтобы отправлять запрос на сервер. Название таких атрибутов начинаются с префикса data-. Для доступа к ним из JavaScript используется свойство dataset:

const element = document.getElementsByTagName('div')[0]// получить значение атрибута data-columns тега divconsole.log(element.dataset.columns)// изменить значениеelement.dataset.columns = 99
          
const element = document.getElementsByTagName('div')[0] // получить значение атрибута data-columns тега div console.log(element.dataset.columns) // изменить значение element.dataset.columns = 99

🛠 У элементов очень много свойств. Если нужно что-то получить из элемента, то скорее всего уже есть свойство, которое хранит эти данные.

🛠 Если нужно удалить элемент и все вложенные в него, воспользуйтесь методом remove():

const element = document.querySelector('#some-element')element.remove()
          const element = document.querySelector('#some-element')
element.remove()

Если вы нашли ошибку, отправьте нам пул-реквест!

Во время отправки формы что-то пошло не так. Попробуйте ещё раз?

.cookie

alt +

.addEventListener()

alt +

Дочерние селекторы | htmlbook.ru

Дочерним называется элемент, который непосредственно располагается внутри родительского элемента. Чтобы лучше понять отношения между элементами документа, разберём небольшой код (пример 12. 1).

Пример 12.1. Вложенность элементов в документе

HTML5CSS 2.1IECrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Lorem ipsum</title>
 </head>
 <body>
  <div>
   <p><em>Lorem ipsum dolor sit amet</em>, consectetuer adipiscing 
   elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam 
   erat volutpat.</p>
   <p><strong><em>Ut wisis enim ad minim veniam</em></strong>, 
   quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex 
   ea commodo consequat.</p>
  </div>
 </body>
</html>

В данном примере применяется несколько контейнеров, которые в коде располагаются один в другом. Нагляднее это видно на дереве элементов, так называется структура отношений тегов документа между собой (рис. 12.1).

Рис. 12.1. Дерево элементов для примера

На рис. 12.1 в удобном виде представлена вложенность элементов и их иерархия. Здесь дочерним элементом по отношению к тегу <div> выступает тег <p>. Вместе с тем тег <strong> не является дочерним для тега <div>, поскольку он расположен в контейнере <p>.

Вернёмся теперь к селекторам. Дочерним селектором считается такой, который в дереве элементов находится прямо внутри родительского элемента. Синтаксис применения таких селекторов следующий.

Селектор 1 > Селектор 2 { Описание правил стиля }

Стиль применяется к Селектору 2, но только в том случае, если он является дочерним для Селектора 1.

Если снова обратиться к примеру 12.1, то стиль вида P > EM { color: red } будет установлен для первого абзаца документа, поскольку тег <em> находится внутри контейнера <p>, и не даст никакого результата для второго абзаца. А все из-за того, что тег <em> во втором абзаце расположен в контейнере <strong>, поэтому нарушается условие вложенности.

По своей логике дочерние селекторы похожи на селекторы контекстные. Разница между ними следующая. Стиль к дочернему селектору применяется только в том случае, когда он является прямым потомком, иными словами, непосредственно располагается внутри родительского элемента. Для контекстного селектора же допустим любой уровень вложенности. Чтобы стало понятно, о чем идет речь, разберём следующий код (пример 12.2).

Пример 12.2. Контекстные и дочерние селекторы

HTML5CSS 2.1IECrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Дочерние селекторы</title>
  <style>
   DIV I { /* Контекстный селектор */
    color: green; /* Зеленый цвет текста */
   }
   P > I { /* Дочерний селектор */
    color: red; /* Красный цвет текста */
   }
  </style>
 </head>
 <body>
  <div>
   <p><i>Lorem ipsum dolor sit amet</i>, consectetuer adipiscing 
   elit, sed diem nonummy nibh euismod tincidunt ut lacreet <i>dolore magna</i> 
   aliguam erat volutpat.
</p> </div> </body> </html>

Результат данного примера показан на рис. 12.2.

Рис. 12.2. Цвет текста, заданный с помощью дочернего селектора

На тег <i> в примере действуют одновременно два правила: контекстный селектор (тег <i> расположен внутри <div>) и дочерний селектор (тег <i> является дочерним по отношению к <p>). При этом правила являются равносильными, поскольку все условия для них выполняются и не противоречат друг другу. В подобных случаях применяется стиль, который расположен в коде ниже, поэтому курсивный текст отображается красным цветом. Стоит поменять правила местами и поставить DIV I ниже, как цвет текста изменится с красного на зеленый.

Заметим, что в большинстве случаев от добавления дочерних селекторов можно отказаться, заменив их контекстными селекторами. Однако использование дочерних селекторов расширяет возможности по управлению стилями элементов, что в итоге позволяет получить нужный результат, а также простой и наглядный код.

Удобнее всего применять указанные селекторы для элементов, которые обладают иерархической структурой — сюда относятся, например, таблицы и разные списки. В примере 12.3 показано изменение вида списка с помощью стилей. За счёт вложения одного списка в другой получаем разновидность меню. Заголовки при этом располагаются горизонтально, а набор ссылок — вертикально под заголовками (рис. 12.3).

Рис. 12.3. Список в виде меню

Для размещения текста по горизонтали к селектору LI добавляется стилевое свойство float. Чтобы при этом разделить между собой стиль горизонтального и вертикального списка и применяются дочерние селекторы (пример 12.3).

Пример 12.3. Использование дочерних селекторов

HTML5CSS 2.1IECrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Дочерние селекторы</title>
  <style>
   UL#menu {
    margin: 0; padding: 0; /* Убираем отступы */
   }
   UL#menu > LI {
    list-style: none; /* Убираем маркеры списка */
    width: 100px; /* Ширина элемента в пикселах */
    background: #b3d9d2; /* Цвет фона */
    color: #333; /* Цвет текста */
    padding: 5px; /* Поля вокруг текста */
    font-family: Arial, sans-serif; /* Рубленый шрифт */
    font-size: 90%; /* Размер шрифта */
    font-weight: bold; /* Жирное начертание */
    float: left; /* Располагаем элементы по горизонтали */
   }
   LI > UL {
    list-style: none; /* Убираем маркеры списка */
    margin: 0; padding: 0; /* Убираем отступы вокруг элементов списка */
    border-bottom: 1px solid #666; /* Граница внизу */
    padding-top: 5px; /* Добавляем отступ сверху */
   }
   LI > A {
    display: block; /* Ссылки отображаются в виде блока */
    font-weight: normal; /* Нормальное начертание текста */
    font-size: 90%; /* Размер шрифта */
    background: #fff; /* Цвет фона */
    border: 1px solid #666; /* Параметры рамки */
    border-bottom: none; /* Убираем границу снизу */
    padding: 5px; /* Поля вокруг текста */
   }
  </style>
 </head>
 <body>
  <ul> 
   <li>Правка 
    <ul> 
      <li><a href="#">Отменить</a></li> 
      <li><a href="#">Вырезать</a></li> 
      <li><a href="#">Копировать</a></li> 
      <li><a href="#">Вставить</a></li> 
    </ul> 
   </li> 
   <li>Начертание
    <ul> 
      <li><a href="#">Жирное</a></li> 
      <li><a href="#">Курсивное</a></li> 
      <li><a href="#">Подчеркнутое</a></li> 
    </ul> 
   </li>
   <li>Размер
    <ul> 
      <li><a href="#">Маленький</a></li> 
      <li><a href="#">Нормальный</a></li> 
      <li><a href="#">Средний</a></li> 
      <li><a href="#">Большой</a></li> 
    </ul> 
   </li> 
  </ul>
 </body>
</html>

В данном примере дочерние селекторы требуются, чтобы разделить стиль элементов списка верхнего уровня и вложенные списки, которые выполняют разные задачи, поэтому стиль для них не должен пересекаться.

Вопросы для проверки

1. Какой цвет будет у жирного курсивного текста в коде

<p>Нормы освещённости построены на <b><i>основе классификации зрительных работ</i></b> по определенным количественным признакам.</p>

При использовании следующего стиля?

P { color: green; }
B {color: blue; }
I {color: orange; }
B > I { color: olive; }
P > I { color: yellow; }

  1. Зелёный.
  2. Синий.
  3. Оранжевый.
  4. Оливковый.
  5. Жёлтый.

2. Какой элемент является родительским для тега <TITLE>?

  1. <HEAD>
  2. <BODY>
  3. <HTML>
  4. <META>
  5. <!DOCTYPE>

3. Для какого тега элемент <!DOCTYPE> выступает родителем?

  1. <HTML>
  2. <TITLE>
  3. <BODY>
  4. <HEAD>
  5. Ни для одного тега.

Ответы

1. Оливковый.

2. <HEAD>

3. Ни для одного тега.

селекторы

Что такое родительский элемент в javascript?

Вопрос задан: Армани Джейкобс

Оценка: 4,8/5 (17 голосов)

родительский элемент. parentElement — это родительский элемент текущего узла . Это всегда объект DOM Element или null .

В чем разница между parentNode и parentElement?

Единственная разница возникает, когда parentNode узла не является элементом. Если это так, parentElement равен null . Поскольку элемент (document.documentElement) не имеет родителя, который является элементом, parentElement имеет значение null.

Что такое родитель в HTML?

Родительский элемент, который находится непосредственно выше и связан с элементом в дереве документа . На приведенной ниже диаграмме

является родителем
    . Дочерний элемент — это элемент, который находится непосредственно ниже и связан с элементом в дереве документа.

    Что такое родительский узел в Javascript?

    родительский узел. parentNode — это родитель текущего узла . Родителем элемента является узел Element, узел Document или узел DocumentFragment.

    Как добавить в Javascript?

    Как это работает:

    1. Сначала выберите элемент ul по его идентификатору с помощью метода querySelector().
    2. Во-вторых, объявите массив языков.
    3. В-третьих, для каждого языка создайте новый элемент li с textContent, назначенным языку.
    4. Наконец, добавьте элементы li к элементу ul с помощью метода append().

    Проверка формы JavaScript

    Найдено 40 связанных вопросов

    В чем разница между append и appendChild?

    Element. append() также позволяет добавлять объекты DOMString, тогда как Node.appendChild() принимает только объекты Node. Element.append() имеет значение без возврата , тогда как Node.appendChild() возвращает добавленный объект Node.

    Что такое appendChild в JavaScript?

    Метод appendChild() позволяет добавить узел в конец списка дочерних узлов указанного родительского узла . В этом методе дочерний узел является узлом, добавляемым к данному родительскому узлу. appendChild() возвращает добавленный дочерний элемент.

    Что ближе всего в Javascript?

    ближайший() Метод ближайший() обходит элемент и его родителей (направляясь к корню документа), пока не найдет узел, соответствующий предоставленной строке селектора. Вернет себя или соответствующего предка. Если такого элемента не существует, он возвращает null .

    Как получить родительские узлы?

    9Свойство 0003 parentNode возвращает родительский узел указанного узла в виде объекта Node. Примечание. В HTML сам документ является родительским узлом элемента HTML, а HEAD и BODY — дочерними узлами элемента HTML. Это свойство доступно только для чтения.

    Что такое узлы Javascript?

    Узлы находятся в модели DOM, также известной как объектная модель документа . В DOM все части документа, такие как элементы, атрибуты, текст и т. д., организованы в виде иерархической древовидной структуры; состоящая из родителей и детей. Эти отдельные части документа называются узлами.

    Что такое прямой дочерний html?

    в вашем примере — это просто родственный элемент . altfoo , а также прямой потомок . фу . Прямой дочерний элемент — это дочерний элемент , который находится непосредственно под родительским элементом с точки зрения иерархии .

    Что такое дочерний элемент в html?

    Дочерние узлы (или дочерние элементы) – элементы , являющиеся прямыми дочерними элементами . Другими словами, они вложены точно в заданный. Например, и являются потомками элемента.

    Что является предком html?

    Элемент-предок — Элемент, который содержит (на любом уровне) другие элементы , является предком содержащихся в нем элементов. В приведенном выше примере элемент содержит (на некотором уровне) элементы

    ,

    ,

    и

    . Следовательно, элемент является предком всех 4-х этих элементов.

    Почему parentNode имеет значение null?

    Введение в атрибут parentNode

    Родительский узел доступен только для чтения. Узлы Document и DocumentFragment не имеют родителя , поэтому parentNode всегда будет нулевым .

    Почему parentElement имеет значение null?

    элемент документа. родительский элемент; Элемент HTML (document. documentElement) не имеет родителя, который является элементом , это узел, поэтому родительский элемент имеет значение null.

    Что такое родительский элемент?

    parentElement — это родительский элемент текущего узла . Это всегда объект DOM Element или null .

    Какой узел имеет родительский узел?

    Узел, у которого есть дочерний узел, называется родительским узлом дочернего элемента (или вышестоящим) . У узла есть не более одного родителя, но, возможно, много узлов-предков, таких как родитель родителя. Дочерние узлы с одним и тем же родителем являются родственными узлами.

    Является ли родительским узлом всех узлов?

    Любой подузел данного узла называется дочерним узлом, а данный узел, в свою очередь, является дочерним узлом . Родственные узлы — это узлы на одном иерархическом уровне под одним и тем же родительским узлом.

    Как настроить таргетинг на родительский элемент в CSS?

    В настоящее время нет способа выбрать родительский элемент в CSS. Если бы существовал способ сделать это, он был бы в одной из текущих спецификаций селекторов CSS: Спецификация селекторов уровня 3. Спецификация селекторов CSS 2.1.

    Что ближе всего в jQuery?

    Самый близкий() — это встроенный метод в jQuery, который возвращает первого предка выбранного элемента в дереве DOM . Этот метод перемещается вверх от текущего элемента в поисках первого предка элемента.

    Как использовать ближайший в CSS?

    Метод ближайший() ищет вверх по дереву DOM для ближайшего элемента, который соответствует указанному селектору CSS . Он начинается с самого элемента, затем проверяется родитель, прародитель и т. д., пока не будет найдено совпадение. Если совпадение не найдено, этот метод возвращает значение null.

    Что такое .this в JavaScript?

    Что такое ключевое слово this в JavaScript. это ключевое слово относится к объект, тот объект, который выполняет текущий бит кода javascript. Другими словами, каждая функция javascript во время выполнения имеет ссылку на текущий контекст выполнения, который называется this.

    Что означает appendChild?

    Метод appendChild() добавляет узел в качестве последнего потомка узла . … Вы также можете использовать этот метод для перемещения элемента из одного элемента в другой (см. «Дополнительные примеры»). Совет. Используйте метод insertBefore(), чтобы вставить новый дочерний узел перед указанным существующим дочерним узлом.

    Для чего используется appendChild?

    Метод appendChild() используется для создания текстового узла в качестве последнего потомка узла . Этот метод также используется для перемещения элемента из одного элемента в другой элемент.

    Что такое createTextNode в JavaScript?

    Метод createTextNode() используется для создания TextNode, который содержит узел элемента и текстовый узел . Он используется для предоставления текста элементу. Этот метод содержит текстовые значения в качестве параметра строкового типа. Синтаксис: document.createTextNode(текст)

    Реклама

    Популярные вопросы

    • 21Усилители — это слово?
    • 36Как асинхронный генератор самовозбуждается?
    • 29Почему возникает дрожь?
    • 17Лаванда однолетник или многолетник?
    • 29С какого возраста ребенок может рисовать квадрат?
    • 35Где запрещено публичное опьянение?
    • 33Где алгебра используется в реальной жизни?
    • 37Можно ли пересылать предварительно отсортированные продукты первого класса?
    • 27Является ли скопофилия прилагательным?
    • 18Из каких мономеров состоит целлюлоза?

    Обход DOM с помощью JavaScript

    11 апреля 2018 г.

    Хороший разработчик JavaScript должен знать, как перемещаться по модели DOM — это действие по выбору элемента из другого элемента.

    Но зачем нам учиться перемещаться по DOM? Разве это не document.querySelector достаточно для большинства наших нужд?

    В этой статье я покажу вам, почему обход лучше, чем document.querySelector , и как обходиться профессионально. Так что расслабьтесь, расслабьтесь и наслаждайтесь статьей!

    Прежде чем мы двинемся дальше, обратите внимание, что эта статья представляет собой пример урока из курса «Изучение JavaScript» — курса, который я создал, чтобы помочь вам выучить JavaScript раз и навсегда (даже если вы пытались и потерпели неудачу ранее). Вы можете узнать больше о Learn JavaScript по этой ссылке.

    Почему мы пересекаем

    Допустим, вы хотите пойти к соседу. Какой самый быстрый и эффективный способ добраться туда?

    1. Переехать из своего дома в их дом (поскольку вы уже знаете их адрес)
    2. Найдите их адрес на картах Google, затем идите в соответствии с указаниями Google.

    Если вы переходите прямо из своего дома в их дом, вы делаете то же самое, что перемещаетесь по DOM — выбираете один элемент из соседнего.

    Если вы ищете их адрес в Google, вы делаете эквивалент document.querySelector для поиска элементов.

    Можете ли вы угадать, какой метод более эффективен?

     <дел>
      
    😎
    🎉

    Вы, наверное, знаете ответ — всегда проще перейти от одного элемента к другому (по сравнению с полным поиском). Вот почему мы пересекаем DOM.

    Вы можете перемещаться в трех направлениях:

    1. Вниз
    2. Боком
    3. Вверх

    (Примечание: есть вторая причина — она более надежна — но это отдельная тема для другого дня.)

    Движение вниз

    Есть два способа перемещения вниз:

    1. querySelector или querySelectorAll
    2. дети

    querySelector или querySelectorAll

    Чтобы перейти вниз от определенного элемента, вы можете использовать element. querySelector или element.querySelectorAll .

    Если мы поместим element.querySelector в аналогию с домом, мы будем искать определенную комнату в вашем доме. Это быстрее, чем искать ту же комнату из космоса (документ).

     <дел>
       

    Название компонента

 константный компонент = document.querySelector('.component')
const title = component.querySelector('.component__title')
console.log(название) //  

...

детей

дочерние элементы — это свойство, позволяющее выбирать прямых потомков (элементы, непосредственно вложенные в другой элемент). Он возвращает коллекцию HTML, которая обновляется при изменении дочерних элементов.

 <ул>
  
  • Ссылка 1
  • Ссылка 2
  • Ссылка 3
  • Ссылка 4
  • Ссылка 5
  •  константный список = document.querySelector('. list')
    const listItems = список.дети
    console.log(элементы списка)
     
    Выбор всех элементов списка с помощью дочернего свойства

    Коллекция HTML аналогична NodeList (который возвращает querySelectorAll ). Есть тонкие различия, которые на самом деле не имеют значения для контекста этой статьи.

    Важно то, что HTML-коллекция представляет собой массивоподобный объект. Если вы хотите перебрать его с помощью Array.prototype.forEach , вам нужно преобразовать его в массив с Массив. от первый.

     константный массив = Array.from(HTMLCollection)
    array.forEach(el => { /* делайте что хотите */})
     

    Выбор конкретного потомка

    Вы можете выбрать n-й элемент в списке как из NodeLists (результат querySelectorAll ), так и из коллекций HTML (результат дочерних элементов ). Для этого вы используете индекс элемента, точно так же, как вы выбираете определенный элемент из массива.

     <ул>
      
  • Ссылка 1
  • Ссылка 2
  • Ссылка 3
  • Ссылка 4
  • Ссылка 5
  •  const listItems = document. querySelectorAll('li')
    константа firstItem = listItems[0]
    const secondItem = listItems[1]
    const третийItem = listItems[2]
    константа fourItem = listItems[3]
    constпятыйItem = listItems[4]
    console.log(первыйэлемент)
    console.log(второй элемент)
    console.log(третий элемент)
    console.log(четвертый элемент)
    console.log(пятый элемент)
     
    Выберите конкретный дочерний элемент с помощью [index]

    Попробуйте приведенный выше код с коллекцией HTML. Вы получите тот же результат.

    Движение вверх

    Есть два способа перемещения вверх:

    1. родительский элемент
    2. ближайший

    родительский элемент

    parentELement — это свойство, позволяющее выбрать родительский элемент. Родительский элемент — это элемент, который заключает в себе текущий элемент.

    В следующем HTML-коде .list является родительским элементом для всех

  • . Каждый
  • является родительским элементом соответствующих <а> .

     <ул>
      
  • Ссылка 1
  • Ссылка 2
  • Ссылка 3
  • Ссылка 4
  • Ссылка 5
  •  const firstListItem = document.querySelector('li')
    константный список = firstListItem.parentElement
    console.log(список)
    // <ул>...
     

    ближайший

    parentElement отлично подходит для выбора на один уровень выше. Чтобы найти элемент, который может быть на несколько уровней выше текущего элемента, вы используете метод ближайших .

    ближайший позволяет выбрать ближайший элемент-предок, соответствующий селектору. Вот синтаксис:

     const NearestAncestor = Element.closest(селектор)
     

    Как вы можете подозревать, селектор — это тот же селектор , который вы передаете querySelector и querySelectorAll .

    В следующем HTML вы можете легко выбрать . list из с помощью Element.closest :

     <ул>
      
  • Ссылка 1
  • Ссылка 2
  • Ссылка 3
  • Ссылка 4
  • Ссылка 5
  •  const firstLink = document.querySelector('a')
    список const = firstLink.closest('.list')
    console.log(список)
    // 
      ...

    Примечание: ближайший начинает поиск с текущего элемента , затем продвигается вверх, пока не достигнет документа . Он останавливается, возвращает первый найденный элемент.

     const firstLink = document.querySelector('a')
    const firstLinkThroughClosest = firstLink.closest('a')
    console.log(firstLinkThroughClosest)
    // Ссылка 1
     

    ближайший довольно новый. Он не работает в IE Edge 14 и ниже. В Опере мини тоже не работает. Если вам нужна поддержка старых браузеров, вы можете использовать полифилл.

    Боковой ход

    Существует три способа перемещения вбок:

    1. следующий элементSibling
    2. предыдущийЭлементСиблинг
    3. Объединение parentElement , дочерних элементов и index .

    следующий элементSibling

    Вы можете выбрать следующий элемент с помощью nextElementSibling .

     const nextElem = Node.nextElementSibling
     
     <ул>
      
  • Ссылка 1
  • Ссылка 2
  • Ссылка 3
  • Ссылка 4
  • Ссылка 5
  •  const firstListItem = document.querySelector('li')
    const secondListItem = firstListItem.nextElementSibling
    console.log (второй элемент списка)
    // 
  • Ссылка 2
  • предыдущийElementSibling

    Аналогично, вы можете выбрать предыдущий элемент с помощью previousElementSibling .

     <ул>
      
  • Ссылка 1
  • Ссылка 2
  • Ссылка 3
  • Ссылка 4
  • Ссылка 5
  •  const secondListItem = document.querySelectorAll('li')[1]
    const firstListItem = secondListItem.previousElementSibling
    console.log(первыйListItem)
    // 
  • Ссылка 1
  • Объединение parentElement, дочерних элементов и индекса

    Этот метод позволяет выбрать определенного родственного элемента. Легче объяснить, как это работает, на примере, так что давайте сделаем это. Допустим, вы хотите выбрать четвертый элемент из первого элемента в этом HTML.

     <ул>
      
  • Ссылка 1
  • Ссылка 2
  • Ссылка 3
  • Ссылка 4
  • Ссылка 5
  • Допустим, у вас уже есть первый предмет:

     const firstItem = document.querySelector('li')
     

    Чтобы выбрать четвертый элемент, вы можете использовать firstItem. parentElement для получения списка, затем list.children для получения коллекции HTML. Получив коллекцию HTML, вы можете найти четвертый элемент, используя индекс 3. (Помните, индекс начинается с нуля!).

     const firstItem = document.querySelector('li')
    список констант = firstItem.parentElement
    const allItems = список.дети
    константа fourItem = allItems[3]
    console.log(четвертый элемент)
    // 
  • Ссылка 4
  • Собираем все вместе за один шаг:

     const firstItem = document.querySelector('li')
    константа fourItem = firstITem.parentElement.children[3]
    console.log(четвертый элемент)
    // 
  • Ссылка 4
  • Упражнение

    Попрактикуйтесь в обходе DOM с помощью методов, описанных в этом уроке. С приведенным ниже HTML выполните следующие задачи:

    1. Выберите .characters с document.querySelector
    2. Выберите .humans из .characters
    3. Выбрать всех людей с помощью querySelectorAll , начиная с . humans
    4. Выбрать всех хоббитов с детьми
    5. Выберите Веселого (хоббита)
    6. Выберите .врагов из Саурона
    7. Выберите .characters div из Nazgûl
    8. Выберите Элронда из Глорфинделя
    9. Выберите Леголаса из Глорфинделя
    10. Выберите Арвен из Глорфинделя
     <дел>
      <ул>
        
  • Фродо Бэггинс
  • Сэмуайз "Сэм" Гэмджи
  • Мериадок "Веселый" Брендибак
  • Перегрин "Пиппин" Тук
  • Бильбо Бэггинс
  • <ул>
  • Гэндальф
  • Саруман
  • Арагорн
  • Боромир
  • Фарамир
  • <ул>
  • Леголас
  • Глорфиндель
  • Элронд
  • Арвен Эвенстар
  • <ул>
  • Саурон
  • Назгул
  • Подведение итогов

    На этом уроке вы научились перемещаться по DOM в трех направлениях — вниз, вверх и в стороны. Вот краткое изложение методов, которые вы изучили:

    .
    1. Движение вниз
      1. element.querySelector
      2. element.querySelectorAll
      3. элемент.дети
    2. Движение вверх
      1. элемент.родительский элемент
      2. элемент.ближайший
    3. Боковой ход
      1. element.nextElementSibling
      2. element.previousElementSibling
      3. Объединить parentElement , дочерние и index

    Я надеюсь, что этот урок поможет прояснить, почему мы просматриваем DOM и как вы можете это сделать. Если этот урок помог вам, вам может понравиться Learn JavaScript, где вы можете шаг за шагом поделиться другими уроками JavaScript — базовыми, средними и даже продвинутыми.

    Если вам понравилась эта статья, поддержите меня, поделившись этой статьей в Твиттере или купив мне кофе 😉. Если вы заметили опечатку, я был бы признателен, если бы вы могли исправить ее на GitHub. Благодарю вас!

    Дети, родители и обход DOM | Учебное пособие по JavaScript на хинди #15

    Установка VS Code, расширений и настройка | Учебное пособие по JavaScript на хинди #1

    Журналы консоли, ошибки, предупреждения и многое другое | Учебник по JavaScript на хинди #2

    Переменные: let, const и var в JavaScript | Учебник по JavaScript на хинди #3

    Типы данных в JavaScript (примитивные и ссылочные типы) | Учебное пособие по JavaScript на хинди #4

    Преобразование типов и приведение типов JavaScript | Учебное пособие по JavaScript на хинди #5

    Строки: свойства, методы и литералы шаблонов в JavaScript | Учебное пособие по JavaScript на хинди #6

    Массивы и объекты в JavaScript | Учебное пособие по JavaScript на хинди #7

    If Else Условные обозначения и переключатели в JavaScript | Учебное пособие по JavaScript на хинди #8

    Циклы For, While и Do while в JavaScript | Учебник по JavaScript на хинди #9

    Функции в JavaScript | Учебное пособие по JavaScript на хинди #10

    Управление веб-сайтами с помощью JS Window Object | Учебное пособие по JavaScript на хинди #11

    Понимание DOM и создание макета веб-сайта | Учебное пособие по JavaScript на хинди #12

    Поисковый робот веб-страницы на JavaScript — упражнение 1 | Учебное пособие по JavaScript на хинди #13

    Селекторы HTML-элементов в JavaScript | Учебник по JavaScript на хинди #14

    Дети, родители и обход DOM | Учебник по JavaScript на хинди #15

    Создание, удаление и замена элементов | Учебное пособие по JavaScript на хинди #16

    События и объект события в JavaScript | Учебное пособие по JavaScript на хинди #17

    Подробнее о событиях JavaScript | Учебник по JavaScript на хинди #18

    Интеллектуальный сканер страниц на JS Упражнение 1: Решение | Учебное пособие по JavaScript на хинди #19

    Локальное и сеансовое хранилище в JavaScript | Учебное пособие по JavaScript на хинди #20

    Создание редактируемого элемента Div с помощью JavaScript: упражнение 2 | Учебник по JavaScript на хинди #21

    Проект 1: Создание веб-сайта для создания заметок с использованием чистого JavaScript | Учебное пособие по JavaScript на хинди #22

    Math Object In JavaScript | Учебное пособие по JavaScript на хинди #23

    Объект даты: дата и время в JavaScript | Учебное пособие по JavaScript на хинди #24

    Создание редактируемого элемента Div Упражнение 2: Решение | Учебное пособие по JavaScript на хинди #25

    Улучшение веб-сайта Magic Notes Упражнение 3 | Учебное пособие по JavaScript на хинди #26

    Объектные литералы, конструкторы и объектно-ориентированный JavaScript | Учебник по JavaScript на хинди #27

    Прототип объекта В javascript | Учебник по JavaScript на хинди #28

    Приложение Notes с заголовком — Упражнение 3: Решение | Учебное пособие по JavaScript на хинди #29

    Наследование прототипов в JavaScript | Учебник по JavaScript на хинди #30

    Классы ES6 и наследование | Учебное пособие по JavaScript на хинди #31

    Реализация библиотечного класса. Упражнение 4 | Учебное пособие по JavaScript на хинди #32

    Проект 2: Создание веб-сайта библиотеки колледжа | Учебник по JavaScript на хинди #33

    Что такое асинхронное программирование? | Учебное пособие по JavaScript на хинди #34

    Учебное пособие по Ajax на хинди | Учебное пособие по JavaScript на хинди #35

    Реализация библиотечного класса. Упражнение 4: Решение | Учебное пособие по JavaScript на хинди #36

    Функции обратного вызова в javascript | Учебное пособие по JavaScript на хинди #37

    Использование словарного API Упражнение 5 | Учебное пособие по JavaScript на хинди #38

    Основы промисов, Promise.then() и Promise.catch() | Учебник по JavaScript на хинди #39

    Проект 3: Создание новостного сайта | Учебное пособие по JavaScript на хинди #40

    Стрелочные функции в Javascript | Учебное пособие по JavaScript на хинди #41

    Использование объектов JavaScript Упражнение 5. Решение | Учебное пособие по JavaScript на хинди #45

    Регулярные выражения JavaScript — основные функции | Учебное пособие по JavaScript на хинди #46

    Регулярные выражения — метасимволы в JavaScript | Учебник по JavaScript на хинди #47

    Регулярные выражения — Наборы символов | Учебник по JavaScript на хинди #48

    Классы сокращенных символов (регулярные выражения) | Учебное пособие по JavaScript на хинди #49

    Проект 4.