JS метод Element.removeAttributeNode()
Загальний опис
Element.removeAttributeNode()
- це метод JavaScript, який дозволяє видалити атрибут з елемента DOM, повертаючи його вузлове представлення. На відміну від removeAttribute()
, який працює з іменами атрибутів у вигляді рядків, removeAttributeNode()
приймає об'єкт Attr
, що представляє атрибут. Цей метод є корисним, коли потрібно виконувати додаткові операції з видаленим атрибутом або зберегти його для подальшого використання.
Використання removeAttributeNode()
вимагає кількох кроків. Спочатку потрібно отримати об'єкт Attr
, який представляє атрибут, що потрібно видалити. Це можна зробити за допомогою методу getAttributeNode()
. Потім можна передати цей об'єкт Attr
у removeAttributeNode()
для видалення атрибута з елемента.
Наприклад, припустимо, що ми маємо елемент div
з атрибутом data-role="modal"
. Щоб видалити цей атрибут і зберегти його вузлове представлення, можна виконати наступний код:
const modalElement = document.querySelector('div[data-role="modal"]');
const roleAttr = modalElement.getAttributeNode('data-role');
const removedAttr = modalElement.removeAttributeNode(roleAttr);
У цьому прикладі ми спочатку отримуємо об'єкт Attr
для атрибута data-role
за допомогою getAttributeNode()
. Потім ми передаємо цей об'єкт у removeAttributeNode()
, який видаляє атрибут з елемента та повертає його вузлове представлення у змінну removedAttr
.
Після видалення атрибута ви можете виконувати додаткові операції з його вузловим представленням. Наприклад, ви можете перевірити значення видаленого атрибута або додати його до іншого елемента:
console.log(removedAttr.value); // Виведе "modal"
const anotherElement = document.getElementById('another');
anotherElement.setAttributeNode(removedAttr);
Це може бути корисним у випадках, коли потрібно тимчасово видалити атрибут з елемента, а потім повернути його.
Важливо пам'ятати, що після видалення атрибута всі стилі, поведінка або дані, пов'язані з цим атрибутом, також будуть видалені. Тому слід обережно використовувати removeAttributeNode()
та переконатися, що це не призведе до небажаних наслідків для функціональності вашого веб-додатку.
Загалом, Element.removeAttributeNode()
є більш гнучким методом для видалення атрибутів, ніж removeAttribute()
, оскільки він дозволяє зберегти вузлове представлення атрибута для подальшого використання. Це робить його корисним у складних сценаріях, де потрібно виконувати додаткові операції з видаленими атрибутами або тимчасово видаляти їх з елементів.
Порада: | Перед видаленням атрибута переконайтеся, що ви отримали правильний об'єкт
|
Порада: | Використовуйте |
Порада: | Якщо ви не плануєте зберігати вузлове представлення видаленого атрибута, використовуйте
|
Синтаксис
removeAttributeNode(attributeNode)
Параметри
- *
attributeNode
Вузол атрибута, який потрібно видалити з елемента.
Return
Attr
Повертає вузол атрибута, який був видалений. Цей вузол представлений об'єктом
Attr
, що містить інформацію про видалений атрибут, таку як його ім'я та значення. Повернений вузол атрибута може бути використаний для подальших операцій, наприклад, для додавання атрибута до іншого елемента або збереження його значення для майбутнього використання.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
1 |
12.1 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
- |
- |
Приклади
У цьому прикладі демонструється використання методу removeAttributeNode()
для видалення атрибутів data-color
з елементів, що призводить до скидання їх стилів. Також показано, як можна додавати або видаляти атрибути за допомогою методів setAttributeNode()
та removeAttributeNode()
.
Спочатку на сторінці є три елементи з різними кольорами тексту, визначеними за допомогою атрибуту data-color
. При завантаженні сторінки JavaScript-код викликає функцію applyStyles()
, яка ітерується по всіх елементах, отримує вузол атрибуту data-color
для кожного елемента за допомогою методу getAttributeNode('data-color')
та встановлює колір фону елемента відповідно до значення цього атрибуту.
Коли користувач натискає на кнопку "Скинути стилі", викликається функція resetStyles()
. Ця функція також ітерується по всіх елементах, отримує вузол атрибуту data-color
для кожного елемента та видаляє цей атрибут за допомогою методу removeAttributeNode()
. Після цього колір фону елементів скидається на прозорий.
Кнопка "Увімкнути/Вимкнути атрибути" викликає функцію toggleAttributes()
, яка перевіряє наявність атрибуту data-color
для кожного елемента. Якщо атрибут існує, він видаляється за допомогою removeAttributeNode()
. Якщо атрибут відсутній, створюється новий вузол атрибуту за допомогою document.createAttribute('data-color')
, встановлюється його значення ('red'
, 'green'
або 'blue'
) та додається до відповідного елемента за допомогою setAttributeNode(newAttribute)
. Після цього функція applyStyles()
викликається для застосування нових стилів на основі оновлених атрибутів.
У цьому прикладі метод removeAttributeNode()
використовується для видалення атрибуту disabled
з елемента <input>
, коли користувач натискає на кнопку. Це дозволяє динамічно активувати або деактивувати елемент введення на основі певних умов.
// Знаходимо елемент input
const inputElement = document.querySelector('#input-field');
// Знаходимо кнопку
const enableButton = document.querySelector('#enable-btn');
// Додаємо обробник події на кнопку
enableButton.addEventListener('click', () => {
// Отримуємо атрибут disabled
const disabledAttribute = inputElement.getAttributeNode('disabled');
// Видаляємо атрибут disabled з елемента input
if (disabledAttribute) {
inputElement.removeAttributeNode(disabledAttribute);
}
});
У цьому прикладі метод removeAttributeNode()
використовується для видалення атрибуту data-product-id
з елементів списку товарів, коли користувач натискає на кнопку "Видалити". Це може бути корисним у сценаріях, де потрібно видаляти додаткові дані, пов'язані з елементами DOM.
<ul id="product-list">
<li data-product-id="1">Товар 1</li>
<li data-product-id="2">Товар 2</li>
<li data-product-id="3">Товар 3</li>
</ul>
<button id="remove-btn">Видалити</button>
<script>
// Знаходимо список товарів
const productList = document.querySelector('#product-list');
// Знаходимо кнопку "Видалити"
const removeButton = document.querySelector('#remove-btn');
// Додаємо обробник події на кнопку
removeButton.addEventListener('click', () => {
// Знаходимо всі елементи списку
const listItems = productList.querySelectorAll('li');
// Ітеруємо по елементах списку та видаляємо атрибут data-product-id
listItems.forEach(item => {
const productIdAttribute = item.getAttributeNode('data-product-id');
if (productIdAttribute) {
item.removeAttributeNode(productIdAttribute);
}
});
});
<script>