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(), оскільки він дозволяє зберегти вузлове представлення атрибута для подальшого використання. Це робить його корисним у складних сценаріях, де потрібно виконувати додаткові операції з видаленими атрибутами або тимчасово видаляти їх з елементів.

автор: Bond

Порада

Використовуйте removeAttributeNode() для оптимізації продуктивності, видаляючи непотрібні атрибути з елементів, які більше не використовуються. Це може зменшити розмір DOM і покращити швидкодію додатку. Однак, будьте обережні, щоб не видалити важливі атрибути випадково.

автор: Bond
Порада

Перед видаленням атрибута переконайтеся, що ви отримали правильний об'єкт Attr за допомогою getAttributeNode(). Якщо передати неіснуючий атрибут у removeAttributeNode(), метод не виконає жодних дій і не поверне помилку.

const element = document.getElementById('myElement');
const attrNode = element.getAttributeNode('data-role');
if (attrNode) {
  const removedAttr = element.removeAttributeNode(attrNode);
  // Виконати операції з removedAttr
}
автор: Bond
Порада

Якщо ви не плануєте зберігати вузлове представлення видаленого атрибута, використовуйте removeAttribute() замість removeAttributeNode(). Це спростить код і зробить його більш читабельним, оскільки removeAttribute() працює безпосередньо з іменами атрибутів у вигляді рядків.

const element = document.getElementById('myElement');
element.removeAttribute('data-obsolete');
автор: Bond

Синтаксис

removeAttributeNode(attributeNode)

Параметри

attributeNode

Вузол атрибута, який потрібно видалити з елемента.

автор: Bond

Повернення

Attr

Повертає вузол атрибута, який був видалений. Цей вузол представлений об'єктом Attr, що містить інформацію про видалений атрибут, таку як його ім'я та значення. Повернений вузол атрибута може бути використаний для подальших операцій, наприклад, для додавання атрибута до іншого елемента або збереження його значення для майбутнього використання.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1 1 12.1 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
- -

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі метод removeAttributeNode() використовується для видалення атрибуту disabled з елемента <input>, коли користувач натискає на кнопку. Це дозволяє динамічно активувати або деактивувати елемент введення на основі певних умов.

HTML

<input type="text" id="input-field" value="текст для прикладу" placeholder="Введи щось">
<button id="enable-btn">Увімкнути</button>

JS

// Знаходимо елемент 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);
  }
});
автор: Bond

У цьому прикладі метод removeAttributeNode() використовується для видалення атрибуту data-product-id з елементів списку товарів, коли користувач натискає на кнопку "Видалити". Це може бути корисним у сценаріях, де потрібно видаляти додаткові дані, пов'язані з елементами DOM.

HTML

<ul>
    <li data-product-id="101">Клавіатура</li>
    <li data-product-id="102">Миша</li>
</ul>
<button id="strip">Прибрати артикули</button>

JS

document.getElementById('strip').addEventListener('click', () => {
    document.querySelectorAll('li[data-product-id]').forEach(item => {
        const attr = item.getAttributeNode('data-product-id');

        if (attr) {
            item.removeAttributeNode(attr);
        }
    });

    console.log('Атрибути знято:', document.querySelector('ul').innerHTML.trim());
});
автор: Bond

У цьому прикладі демонструється використання методу 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() викликається для застосування нових стилів на основі оновлених атрибутів.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід