JS метод Attr.setNamedItem()


Загальний опис

setNamedItem() є методом об'єкту NamedNodeMap, який представляє колекцію атрибутів елемента в DOM (Document Object Model). Цей метод використовується для встановлення або заміни значення існуючого атрибута елемента або додавання нового атрибута. Він є корисним інструментом для динамічного маніпулювання атрибутами елементів у JavaScript.

Для використання методу setNamedItem() необхідно спочатку створити новий об'єкт Attr за допомогою методу createAttribute() або отримати існуючий об'єкт Attr з колекції attributes елемента. Наприклад, припустимо, що ми маємо таку HTML-розмітку:

<div id="myDiv" class="my-class"></div>

Щоб додати новий атрибут data-value з значенням 42 до цього елемента, ми можемо використати наступний код:

const div = document.getElementById('myDiv');
const attrs = div.attributes;
const newAttr = document.createAttribute('data-value');
newAttr.value = '42';
attrs.setNamedItem(newAttr);

У цьому прикладі ми спочатку отримуємо посилання на елемент div за його id. Потім ми отримуємо колекцію attributes цього елемента та створюємо новий об'єкт Attr за допомогою document.createAttribute('data-value'). Ми встановлюємо значення цього атрибута на '42' за допомогою властивості value. Нарешті, ми додаємо новий атрибут до колекції attributes за допомогою методу setNamedItem(newAttr).

Метод setNamedItem() також може бути використаний для заміни значення існуючого атрибута. Наприклад:

const div = document.getElementById('myDiv');
const attrs = div.attributes;
const classAttr = attrs.getNamedItem('class');
classAttr.value = 'new-class';
attrs.setNamedItem(classAttr);

У цьому прикладі ми спочатку отримуємо об'єкт Attr для атрибута class за допомогою attrs.getNamedItem('class'). Потім ми змінюємо значення цього атрибута на 'new-class' за допомогою властивості value. Нарешті, ми замінюємо існуючий атрибут class на новий за допомогою attrs.setNamedItem(classAttr).

Метод setNamedItem() також може бути корисним у циклах або інших ітераційних конструкціях, де потрібно додати або змінити кілька атрибутів елемента. Наприклад:

const div = document.getElementById('myDiv');
const attrs = div.attributes;

const dataAttrs = [
  { name: 'data-value', value: '42' },
  { name: 'data-visible', value: 'true' },
  { name: 'data-type', value: 'string' }
];

for (const attr of dataAttrs) {
  const newAttr = document.createAttribute(attr.name);
  newAttr.value = attr.value;
  attrs.setNamedItem(newAttr);
}

У цьому прикладі ми маємо масив об'єктів dataAttrs, що представляють атрибути, які ми хочемо додати до елемента div. Ми ітеруємо через цей масив за допомогою циклу for...of та для кожного атрибута створюємо новий об'єкт Attr за допомогою document.createAttribute(attr.name). Потім ми встановлюємо значення цього атрибута на attr.value та додаємо його до колекції attributes за допомогою attrs.setNamedItem(newAttr).

Загалом, метод Attr: setNamedItem() є потужним інструментом для маніпулювання атрибутами елементів у JavaScript. Він дозволяє додавати нові атрибути, змінювати значення існуючих атрибутів та працювати з колекцією attributes елемента. Використовуючи цей метод разом з іншими методами маніпулювання DOM, ви можете створювати більш гнучкі та динамічні веб-додатки.

автор: Bond

Порада

Слід зазначити, що робота з атрибутами безпосередньо через DOM може бути менш ефективною, ніж використання методів, таких як setAttribute() або removeAttribute(). Тому, перш ніж використовувати метод setNamedItem(), варто розглянути альтернативні підходи та вибрати найбільш оптимальний для вашого випадку.

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

Важливо пам'ятати, що метод setNamedItem() замінює існуючий атрибут із заданою назвою, якщо такий існує в колекції. Якщо ви хочете додати новий атрибут, не замінюючи існуючий, ви можете використовувати метод setAttributeNode() замість setNamedItem().

автор: Bond

Синтаксис

setNamedItem(attr)

Параметри

attr

Атрибут, який потрібно вставити у колекцію.

автор: Bond

Повернення

Attr

Повертає старий атрибут, якщо він був замінений, або null, якщо атрибут є новим. Це дозволяє користувачу контролювати заміну атрибутів та визначати, чи були вони успішно вставлені у колекцію.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 ≤12.1 12 6
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1

Приклади

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

У цьому прикладі ми використовуємо метод setNamedItem() для додавання нового атрибута data-value з значенням 42 до елемента div.

HTML

<div id="myDiv">Демонстраційний елемент</div>

JS

const div = document.getElementById('myDiv');
const attrs = div.attributes;
const newAttr = document.createAttribute('data-value');
newAttr.value = '42';
attrs.setNamedItem(newAttr);
автор: Bond

У цьому прикладі ми створюємо функцію setDataAttributes, яка додає або змінює атрибути, що починаються з data-, для всіх елементів з певним класом.

function setDataAttributes(className, dataAttrs) {
  const elements = document.getElementsByClassName(className);

  for (let i = 0; i < elements.length; i++) {
    const element = elements[i];
    const attrs = element.attributes;

    for (const attr of dataAttrs) {
      const newAttr = document.createAttribute(attr.name);
      newAttr.value = attr.value;
      const existingAttr = attrs.getNamedItem(attr.name);

      if (existingAttr) {
        attrs.setNamedItem(newAttr);
      } else {
        attrs.setNamedItem(newAttr);
      }
    }
  }
}
автор: Bond

У цьому прикладі ми маємо елемент div з id="target-element", якому ми можемо встановлювати або змінювати атрибути. Користувач може ввести назву та значення атрибута у відповідні текстові поля input та натиснути кнопку "Встановити атрибут".

Коли користувач натискає кнопку "Встановити атрибут", ми отримуємо введені назву та значення атрибута з текстових полів за допомогою attrNameInput.value.trim() та attrValueInput.value.trim() відповідно. Якщо обидва значення не порожні, ми створюємо новий об'єкт Attr за допомогою document.createAttribute(attrName) та встановлюємо його значення на attrValue через властивість value.

Далі ми перевіряємо, чи існує атрибут з такою назвою в колекції attributes елемента target-element за допомогою targetElement.attributes.getNamedItem(attrName). Якщо такий атрибут існує, ми замінюємо його значення на нове за допомогою targetElement.attributes.setNamedItem(newAttr) та виводимо повідомлення про успішну зміну атрибута. Якщо атрибут не існує, ми додаємо новий атрибут за допомогою targetElement.attributes.setNamedItem(newAttr) та виводимо повідомлення про додавання нового атрибута.

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

автор: Bond

Коментарі

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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