JavaScript метод Element.getAttribute()
Определение и применение
JavaScript метод getAttribute() объекта
Element
возвращает значение указанного атрибута элемента. Если данный атрибут не существует у указанного элемента, то
возвращаемое значение будет соответствовать значению null.
В XML произвольные атрибуты не становятся одноимёнными JavaScript-свойствами элемента.
getAttribute() ищет атрибут по квалифицированному имени, включая префикс при его наличии.
getAttributeNS(namespaceURI, localName) ищет по пространству имён и локальному имени независимо от
выбранного в документе префикса.
getAttributeNames() возвращает массив имён на момент вызова; затем getAttribute() читает
значения по этим именам. Это альтернатива живой коллекции узлов attributes, а не гарантия более высокой
производительности.
Поддержка браузерами
Спецификация: dom.spec.whatwg
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
getAttribute | 1 | 12 | 1 | 8 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
const attributeVal = element.getAttribute(attributeName);
Спецификация
Значения параметров
| Параметр | Описание |
|---|---|
attributeName |
Имя атрибута, значение которого вы хотите получить. Обязательный параметр. |
Пример использования
Чтение и увеличение значения атрибута data-val
Нажмите ▶, затем Click me несколько раз: в абзаце появится текущее значение data-val, после чего атрибут увеличивается на единицу через setAttribute().
index.html
<button data-migration-click-0="">Click me</button>
<p data-val="1"></p>
main.js
const checkAttr = function () {
const p = document.querySelector('p'),
attr = 'data-val'
if (p.hasAttribute(attr)) {
const attrVal = p.getAttribute(attr)
p.innerHTML = attrVal
const newAttrVal = Number(attrVal) + 1
p.setAttribute(attr, newAttrVal)
}
}
// Обработчики кнопок перенесены из HTML для запуска с CSP без inline-скриптов.
document.querySelector('[data-migration-click-0]').addEventListener('click', function () {
checkAttr()
})
document.querySelector('[data-migration-click-0]').removeAttribute('data-migration-click-0')
Нажмите ▶, чтобы запустить пример.
В этом примере с использованием метода
addEventListener()
при нажатии на кнопку (HTML элемент
<button>) вызываем функцию, которая:
-
Инициализирует две переменные, первая переменная содержит первый элемент
<p>в документе, а вторая строковое значение (одноименное с атрибутом элемента<p>). -
С помощью метода
hasAttribute()проверяем имеется ли у элемента<p>атрибут со значением, содержащимся в переменнойattr. -
С помощью метода
getAttribute()получаем значение этого атрибута и с помощью свойстваinnerHTMLдобавляем элементу<p>новое содержимое (значение атрибутаdata-val). -
После этого инициализируем переменную, которая увеличивает значение атрибута
data-valна 1, и с помощью методаsetAttribute()устанавливаем новое значение для атрибутаdata-valэлементу<p>. Обратите внимание, что перед увеличением на единицу мы приводим строковое значение, содержащееся в переменной к числу, используя конструкторNumber().
В следующем примере мы рассмотрим совместное использование методов
getAttributeNames()
и getAttribute():
Вывод всех атрибутов кнопки
Нажмите ▶, затем кнопку в результате: под ней появятся имена и значения всех её атрибутов, полученные через getAttributeNames() и getAttribute().
index.html
<button data-migration-click-0="" class="myButton" name="active-button" value="100" data-val="123">Нажми меня</button>
<div class="info"></div>
main.js
function myFunc() {
const btn = document.querySelector('button'),
info = document.querySelector('.info')
let attributeNames = btn.getAttributeNames()
for (let name of attributeNames) {
let val = btn.getAttribute(name)
info.innerHTML += '<p>Имя атрибута: <b>' + name + '</b>. Значение атрибута: <b>' + val + '</b></p>'
}
}
// Обработчики кнопок перенесены из HTML для запуска с CSP без inline-скриптов.
document.querySelector('[data-migration-click-0]').addEventListener('click', function () {
myFunc()
})
document.querySelector('[data-migration-click-0]').removeAttribute('data-migration-click-0')
Нажмите ▶, чтобы запустить пример.
В этом примере с использованием метода
addEventListener()
при нажатии на кнопку (HTML элемент
<button>) вызываем функцию myFunc(), которая с использованием JavaScript метода
querySelector()
находит первый элемент
<button>
в документе и первый элемент с классом info, и инициализирует переменные этими значениями.
С помощью метода
getAttributeNames()
возвращаем имена всех атрибутов элемента
<button>
в виде массива строк и инициализируем переменную этим значением. После этого с помощью цикла проходим по всем
элементам массива и вызываем на каждой итерации метод getAttribute(), который получает значение
переданного атрибута, и с помощью свойства innerHTML добавляем элементу
<div>
новое содержимое (каждый атрибут элемента и его значение).
Атрибут и текущее значение поля
Измените текст поля: value изменится, а getAttribute("value") сохранит исходное значение. Кнопка восстановит его через defaultValue.
index.html
<label for="name">Имя</label>
<input id="name" value="Анна" />
<button id="reset" type="button">Вернуть исходное значение</button>
<pre id="result" aria-live="polite"></pre>
main.js
const field = document.querySelector('#name')
const result = document.querySelector('#result')
function show() {
result.textContent = 'Атрибут: ' + field.getAttribute('value') + '\nСвойство: ' + field.value
}
field.addEventListener('input', show)
document.querySelector('#reset').addEventListener('click', () => {
field.value = field.defaultValue
show()
})
show()
Нажмите ▶, чтобы запустить пример.