JS об'єкт Attr


Вступ до об'єкта Attr

Об'єкт Attr у JavaScript є основним способом представлення атрибутів елемента у DOM (Document Object Model). Кожен атрибут елемента, такий як "class", "id" або "href", може бути представлений об'єктом Attr. Цей об'єкт надає зручний інтерфейс для отримання та зміни значень атрибутів.

Отримання за допомогою методу getAttributeNode

Якщо у вас вже є посилання на елемент DOM, ви можете використовувати метод getAttributeNode, щоб отримати об'єкт Attr для конкретного атрибута.

var element = document.getElementById("example");
var attr = element.getAttributeNode("id");
console.log(attr.value);  // виведе "example"

У цьому прикладі ми шукаємо елемент з ідентифікатором "example" і отримуємо його атрибут "id" як об'єкт Attr. Це надає нам можливість працювати з атрибутом на більш детальному рівні.

Властивість attributes

Властивість attributes елемента DOM повертає живий об'єкт NamedNodeMap, що містить об'єкти Attr для кожного атрибута.

var element = document.getElementById("example");
var attr = element.attributes.getNamedItem("id");
console.log(attr.value);  // виведе "example"

У цьому прикладі ми знову отримуємо атрибут "id", але цього разу використовуємо властивість attributes.

Модифікація атрибутів за допомогою Attr

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

var element = document.getElementById("example");
var attr = element.getAttributeNode("class");
attr.value = "newClass";
console.log(element.className);  // виведе "newClass"

У цьому прикладі ми змінюємо значення атрибута "class" елемента на "newClass" за допомогою об'єкта Attr.

автор: Bond

Порада

Зміна значень атрибутів може мати неочікувані наслідки для відображення або поведінки вашого веб-сайту, особливо якщо ці атрибути взаємодіють з CSS чи JavaScript. Завжди тестуйте свої зміни, щоб переконатися, що все працює правильно.

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

Завжди працюйте з атрибутами як з рядками. Незалежно від того, яке значення ви встановлюєте або отримуєте з атрибута, воно завжди буде представлено у вигляді рядка. Навіть якщо атрибут має числове значення, вам може знадобитися перетворити його у число перед використанням.

var element = document.createElement("div");
element.setAttribute("data-count", "5");
var countAttr = element.getAttribute("data-count");
var count = parseInt(countAttr, 10); // перетворення рядка у число
автор: Bond
Порада

Використовуйте getAttribute і setAttribute для простої роботи з атрибутами. Якщо вам не потрібно працювати з об'єктом Attr безпосередньо, ви можете використовувати методи getAttribute і setAttribute елемента для швидкого доступу до значень атрибутів.

var element = document.createElement("a");
element.setAttribute("href", "https://example.com");
console.log(element.getAttribute("href"));  // виведе "https://example.com"
автор: Bond
Нотатка

В сучасному програмуванні на JavaScript зазвичай не використовують Attr безпосередньо (замість цього використовують методи, такі як element.getAttribute()). Але Attr може бути корисним у певних ситуаціях.

автор: Bond
Нотатка

Іноді може бути корисно використовувати атрибути для взаємодії з CSS стилями, зокрема при використанні CSS селекторів атрибутів.

var menu = document.createElement("div");
menu.setAttribute("data-state", "closed");

Тепер у вашому CSS може бути правило, яке визначає стилі для меню на основі значення атрибута data-state:

div[data-state="closed"] {
    display: none;
}

Використовуючи JavaScript, ви можете легко змінювати значення атрибуту, щоб динамічно керувати відображенням меню.

автор: Bond

методи

Метод Опис
getNamedItem Отримує вказане значення атрибута.
item Повертає елемент Attr за вказаним індексом.
removeNamedItem Ця властивість видаляє атрибут за його іменем з об'єкта Attr.
setNamedItem Встановлює атрибут у вказаний об'єкт Attr у колекції.

властивості

Властивість Опис
isId Вказує, чи є властивість елемента ідентифікатором.
length Вказує кількість атрибутів елемента.
name Повертає назву атрибута елемента як рядок.
specified Вказує, чи був атрибут явно вказаний у HTML-документі.
value Зберігає значення атрибуту.

Переглядачі

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

Приклади

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

Якщо потрібно видалити певний атрибут із елемента, можна використовувати Attr.

HTML

<div id="demo-element" data-custom-attr="42">Демонстраційний елемент</div>

JS

const element = document.getElementById('demo-element');

element.attributes.removeNamedItem('data-custom-attr');
console.log('Атрибут прибрано:', element.outerHTML);
автор: Bond

Використовуючи data-* атрибути, можна додавати користувацькі дані до елементів, які не впливають на відображення чи поведінку, але можуть бути корисними для додаткового зберігання інформації або метаданих.

Тут ми зберігаємо ID користувача безпосередньо у елементі для подальшої обробки, наприклад, при кліці на елемент.

var element = document.createElement("div");
element.setAttribute("data-user-id", "12345");
автор: Bond

У веб-дизайні доступність важлива для створення сайтів, які можуть взаємодіяти з користувацькими засобами для людей з обмеженими можливостями. За допомогою об'єкта Attr можна додавати або змінювати такі атрибути, як aria-*.

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

var button = document.createElement("button");
button.setAttribute("aria-label", "Close");
автор: Bond

Якщо ви хочете змінити значення атрибута елемента, ви можете використовувати Attr для цього.

HTML

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

JS

const element = document.getElementById('demo-element');

let attr = element.attributes.getNamedItem('data-custom-attr');
if (attr) {
    attr.value = 'нове значення';
}
автор: Bond

Якщо ви хочете перевірити, чи має елемент певний атрибут, ви можете використовувати об'єкт Attr.

HTML

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

JS

const element = document.getElementById('demo-element');

let attr = element.attributes.getNamedItem('data-custom-attr');
if (attr) {
    console.log('Елемент має атрибут data-custom-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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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