hellojs.ru
Главная - Основы JavaScript - Действия с элементами на странице

Действия с элементами на странице

Размещено в категории "Основы JavaScript"
28.09.2024 / просмотров: 47 / комментариев: 0
Ресурсы:

caniuse.com




Будем использовать следующую HTML-вёрстку
Код

<div class="box" id="box"></div>

<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>

<div class="circle"></div>  
<div class="circle"></div>
<div class="circle"></div>

<div class="wrapper">
  <div class="heart"></div>
  <div class="heart"></div>
  <div class="heart"></div>  
</div>

Получим необходимые нам элементы
Код

const box = document.getElementById('box'),
btns = document.getElementsByTagName('button'),
circles = document.getElementsByClassName('circle'),
hearts = document.querySelectorAll('.heart'),
oneHeart = document.querySelector('.heart'),
wrapper = document.querySelector('.wrapper');

Чтобы понимать, что можно сделать с тем или иным элементом на странице, нужно рассмотреть его в качестве объекта.

Воспользуемся этим, например, для элемента box
Код

console.dir(box);

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

В списке свойств объекта мы видим свойство style, объект внутри объекта. Все свойства в объекте style - это инлайн-свойства.

И вот как мы можем менять стили элемента: обращаемся к элементу, далее к его объекту style, и далее прописываем нужное свойство
Код

box.style.backgroundColor = 'blue';

box.style.width = '500px';

btns[1].style.borderRadius = '100%';

box.style.cssText = 'background-color: blue; width: 500px';

box.style.cssText = `background-color: blue; width: ${num}px`;

Если много одинаковых элементов, их стили можно поменять циклом
Код

for (let i = 0; i < hearts.length; i++) {
  hearts[i].style.backgroundColor = 'blue';
}

Или с помощью forEach(), если этот метод доступен для данной выборки (только для выборки, полученной с помощью querySelectorAll())

Методы для работы с элементами страницы



document.createElement()
Код

const div = document.createElement('div'); // создали новый элемент div

document.createTextNode()
Код

const text = document.createTextNode('Тут был я'); // используется редко

Если для элемента нужно добавить много стилей, используются не инлайн-стили,а css-классы (добавляются либо удаляются для элемента)
Код

div.classList.add('black'); // добавили элементу div класс black

Чтобы вывести вновь созданный элемент div на страницу, используем DOM-дерево. Например, добавим его в конец body (в конец родительского элемента)
Код

document.body.append(div);

Или в конец блока wrapper (можно сделать также без сохранения его в промежуточную переменную, если не планируется его использовать больше одного раза):
Код

document.querySelector('.wrapper').append(div);

prepend() позволит вставить какой-то элемент в начало родительского
Код

wrapper.prepend(div);

before() и after() позволяет вставить элемент перед и после выбранного
Код

hearts[0].before(div);  

hearts[0].after(div);  

remove() позволяет удалять элементы
Код

circles[0].remove();

replaceWith() заменить один элемент другим (первым указывается тот элемент, который хотим заменить)
Код

hearts[0].replaceWith(circles[0]);


Устаревшие, но иногда используемые методы



Аналог append()
Код

wrapper.appendChild(div);

Ранее методов prepend(), before(), after() не существовало, был лишь insertBefore() ('вставить перед'), в нём первым аргументом указывается вставляемый элемент
Код

wrapper.insertBefore(div, hearts[0]);

Метода remove() не было, а был removeChild()
Код

wrapper.removeChild(hearts[0]);

Вместо replaceWith() раньше использовали replaceChild(), для которого первым аргументом указывали заменяющий элемент,а вторым - заменяемый, при этом также используется родительский элемент wrapper, в котором происходят изменения
Код

wrapper.replaceChild(circles[0], hearts[0]);


Добавление текста или кода в элементы



Добавим в наш элемент div какой-нибудь текст
Код

div.innerHTML = 'Hello World';

div.innerHTML = 'Hello World';

div.textContent = 'Only works with text!'; // работает только с текстом

Чтобы вставить какой-то кусок кода, используется insertAdjacentHTML()
Код

div.insertAdjacentHTML('afterbegin', 'Hello');

afterbegin - вставить HTML-код в начало элемента (сразу после открывающего тега элемента)
afterend - вставить HTML-код после элемента (после закрывающего тега элемента)
beforebegin - вставить HTML-код перед элементом (до открывающего тега элемента)
beforeend - вставить HTML-код в конец элемента (сразу перед закрывающим тегом элемента)

Для наглядности:
Код

<!-- это beforebegin -->
<div>
  <!-- это afterbegin -->
  ля-ля-ля...
  <!-- это beforeend -->
</div>
  <!-- это afterend -->

Цитата

С помощью innerHTML можно также получить содержимое элемента
Код

console.log(div.innerHTML); // выведет содержимое элемента div



Еще одна особенность при получении элементов страницы



Если нужно получить элементы, лежащие внутри родительского, то получаем доступ к родителю через document, а уже доступ к этим элементам через родителя:
Код

const wrapper = document.querySelector('.wrapper');

const hearts = wrapper.querySelectorAll('.heart');

Таким образом, поиск будет производиться только внутри родительского элемента.
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
Сайт управляется системой uCoz