#7 Добавление и удаление DOM элементов

poster
В этом уроке мы с вами разберемся, как добавлять и удалять DOM элементы. Это очень важные знания, так как очень много элементов на странице мы добавляем и удаляем с помощью javascript.
Понравилось? Поделитесь с друзьями!
Понравилось?
Поделитесь с друзьями!
Комментарии
Текст видео

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

Итак сейчас у нас пустой body и давайте добавим туда контейнер, с которым будем работать.

<html>
  <head>
      <title>Test</title>
  </head>
  <body>
    <div class='app'/>
    </div>
    <script src='code.js'></script>
  </body>
</html>

Теперь в нашем javascript мы можем создать новый DOM елемент с помощью метода createElement.

var title = document.createElement('div')
console.log('title', title)

В консоли браузера мы с вами видим этот пустой DOM елемент. И теперь, после того, как мы его создали мы можем вставить его в DOM. Для этого нам понадобится метод appendChild.

var app = document.querySelector('.app')
var title = document.createElement('div')

app.appendChild(title)

То есть мы нашли сначала наш елемент app, а потом добавили к нему как child елемент наш title.

Если мы посмотрим в браузер, то мы видим, что у нас появился новый пустой DOM елемент.

Но мы же хотим, чтобы наш елемент создавался с нужными нам классами. Для этого мы можем задать классы созданному елементу с помощью метода className.

var app = document.querySelector('.app')
var title = document.createElement('div')
title.className = 'title'

app.appendChild(title)

Теперь в браузере у нас появился в DOM уже елемент с классом. Но теперь хотелось бы еще и добавить этому новому елементу текст. Мы можем использовать для этого метод innerHTML, который мы с вами уже изучали ранее.

var app = document.querySelector('.app')
var title = document.createElement('div')
title.className = 'title'
title.innerHTML = 'This is our first news.'

app.appendChild(title)

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

Но есть нюансы в том, как работает метод appendChild. Давайте сейчас добавим внутрь div app еще один div.

<html>
  <head>
      <title>Test</title>
  </head>
  <body>
    <div class='app'>
      <div class='content'>
        This is content for our news
      </div>
    </div>
    <script src='code.js'></script>
  </body>
</html>

Если мы посмотрим в браузер, то у нас сначала вывелся content, а потом уже после него вывелся созданный елемент. Это происходит потом, что метод appendChild добавляет елемент в самый конец. Это значит, что этот елемент будет добавлен как последний дочерний елемент в родителе.

Что же нам сейчас делать? Ведь мы хотим вывести сначала title, а потом контент. В этом нам поможет метод .insertBefore. Он работает точно также, как и appendChild, но добавляет DOM елемент на позицию перед указанным елементом. То есть первым аргументом мы указываем елемент, который хотим вставить, а вторым перед каким дочерним елементом мы будем вставлять.

var app = document.querySelector('.app')
var title = document.createElement('div')
title.className = 'title'
title.innerHTML = 'This is our first news.'

app.insertBefore(title, app.firstChild)

Так как мы хотим вставить перед первым дочерним елементом, то мы можем использовать метод .firstChild, чтобы найти первый дочерний елемент у app.

Также иногда нам приходится удалять DOM елементы. В этом нам поможет метод .removeChild. Мы можем просто указать, какой елемент мы хотим удалить из парента.

var app = document.querySelector('.app')
var title = document.createElement('div')
title.className = 'title'
title.innerHTML = 'This is our first news.'

app.insertBefore(title, app.firstChild)

app.removeChild(app.firstChild)

То есть мы вызываем на app removeChild, чтобы удалить дочерний елемент.

Есть также и более простой вариант записи, когда мы просто вызываем .remove на елементе.

var app = document.querySelector('.app')
var title = document.createElement('div')
title.className = 'title'
title.innerHTML = 'This is our first news.'

app.insertBefore(title, app.firstChild)

app.firstChild.remove()

Этот код отработает абсолютно одинаково.

Если у вас что-то не получается, либо возникли вопросы и комментарии, пишите их прямо под этим видео и я обязательно на них отвечу.

Только зарегистрированные пользователи могут оставлять комментарии.  Войдите, пожалуйста.
Krot TV
9 лет назад
Подскажи если не в напряг, какие шрифты ты использовал на этом сайте? И Спасибо за урок))
monsterlessons
9 лет назад
На здоровье. Georgia,Serif - это стандартное семейство шрифтов.
Krot TV
9 лет назад
Еще раз спасибо, жду след. уроков)