JavaScriptDOM i zdarzenia

Element.setAttribute()

Ustawia wartość atrybutu HTML elementu albo dodaje nowy atrybut.

Zwraca
undefined
Zmienia oryginał
Tak
Na tej stronie

Przykład

#
JavaScript
const link = document.querySelector('#next')

link.setAttribute('href', '/lekcja-2')
link.setAttribute('title', 'Przejdź do lekcji 2')

console.log(link.getAttribute('href'))
console.log(link.getAttribute('title'))
console.log(link.getAttribute('target'))
console.log(link.hasAttribute('title'))
Konsola
/lekcja-2
Przejdź do lekcji 2
null
true

Definicja i zastosowanie

#

Metoda setAttribute(nazwa, wartość) ustawia atrybut elementu. Jeśli atrybut już istnieje, jego wartość zostanie nadpisana, a jeśli nie, zostanie dodany. Wartość zawsze jest zamieniana na napis.

Towarzyszą jej metody getAttribute() (odczyt, zwraca null, gdy atrybutu nie ma), hasAttribute(), removeAttribute() i toggleAttribute(). Przydają się szczególnie przy atrybutach ARIA, takich jak aria-expanded, i przy atrybutach, które nie mają odpowiednika we właściwościach elementu.

Wiele atrybutów ma też odpowiadające im właściwości, np. element.id, link.href czy input.value. Nie zawsze przechowują to samo: getAttribute("href") zwraca tekst wpisany w HTML, a link.href pełny adres. Atrybut value pola formularza to wartość początkowa, a właściwość value to tekst aktualnie wpisany przez użytkownika.

Atrybuty logiczne, takie jak disabled czy hidden, działają przez samą obecność. Nawet setAttribute("disabled", "false") wyłączy przycisk. Żeby go włączyć, usuń atrybut przez removeAttribute() albo ustaw właściwość button.disabled = false.

Składnia

#
Składnia
element.setAttribute(name, value)

element.getAttribute(name)
element.hasAttribute(name)
element.removeAttribute(name)
element.toggleAttribute(name)

Parametry

#
  • name

    napis

    Nazwa atrybutu, np. "href", "alt" albo "aria-expanded".
  • value

    napis

    Nowa wartość atrybutu. Inne typy zostaną zamienione na napis.

Więcej przykładów

#
Atrybuty logiczne
JavaScript
const send = document.querySelector('#send')

send.setAttribute('disabled', 'false')
console.log(send.disabled)

send.removeAttribute('disabled')
console.log(send.disabled)

send.toggleAttribute('disabled')
console.log(send.hasAttribute('disabled'))
Konsola
true
false
true
Atrybut a właściwość value
JavaScript
const nick = document.querySelector('#nick')

nick.value = 'Ania'

console.log(nick.value)
console.log(nick.getAttribute('value'))
Konsola
Ania
Gość
ARIA w rozwijanym menu
JavaScript
const menuButton = document.querySelector('#menu-btn')

menuButton.addEventListener('click', () => {
  const expanded = menuButton.getAttribute('aria-expanded') === 'true'
  menuButton.setAttribute('aria-expanded', String(!expanded))
  console.log('aria-expanded:', menuButton.getAttribute('aria-expanded'))
})

menuButton.click()
menuButton.click()
Konsola
aria-expanded: true
aria-expanded: false

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Do atrybutów data-* wygodniej używać właściwości dataset.
  • Atrybut logiczny wyłączysz tylko przez removeAttribute(). Wartość "false" nadal oznacza, że atrybut jest obecny.
  • Do klas używaj classList, a do stylów style, zamiast nadpisywać w całości atrybuty class i style.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.