Element.setAttribute()

Définit la valeur d’un attribut HTML d’un élément, ou en ajoute un nouveau.

Renvoie
undefined
Modifie l’original
Oui
Sur cette page

Exemple

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

link.setAttribute('href', '/lecon-2')
link.setAttribute('title', 'Aller à la leçon 2')

console.log(link.getAttribute('href'))
console.log(link.getAttribute('title'))
console.log(link.getAttribute('target'))
console.log(link.hasAttribute('title'))
Console
/lecon-2
Aller à la leçon 2
null
true

Définition et utilisation

#

La méthode setAttribute(nom, valeur) définit un attribut de l’élément. S’il existe déjà, sa valeur est écrasée, et sinon il est ajouté. La valeur est toujours convertie en chaîne.

Elle s’accompagne des méthodes getAttribute() (lecture, renvoie null quand l’attribut n’existe pas), hasAttribute(), removeAttribute() et toggleAttribute(). Elles sont particulièrement utiles avec les attributs ARIA, comme aria-expanded, et avec les attributs qui n’ont pas d’équivalent parmi les propriétés de l’élément.

Beaucoup d’attributs ont aussi une propriété correspondante, par ex. element.id, link.href ou input.value. Elles ne stockent pas toujours la même chose : getAttribute("href") renvoie le texte tel qu’écrit dans le HTML, alors que link.href renvoie l’adresse complète. L’attribut value d’un champ de formulaire est sa valeur initiale, alors que la propriété value est le texte actuellement saisi par l’utilisateur.

Les attributs booléens, comme disabled ou hidden, agissent par leur simple présence. Même setAttribute("disabled", "false") désactivera le bouton. Pour le réactiver, retirez l’attribut avec removeAttribute(), ou définissez la propriété button.disabled = false.

Syntaxe

#
Syntaxe
element.setAttribute(name, value)

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

Paramètres

#
  • name

    chaîne

    Le nom de l’attribut, par ex. "href", "alt" ou "aria-expanded".
  • value

    chaîne

    La nouvelle valeur de l’attribut. Les autres types seront convertis en chaîne.

Plus d’exemples

#
Les attributs booléens
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'))
Console
true
false
true
L’attribut et la propriété value
JavaScript
const nick = document.querySelector('#nick')

nick.value = 'Léa'

console.log(nick.value)
console.log(nick.getAttribute('value'))
Console
Léa
Invité
ARIA dans un menu déroulant
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()
Console
aria-expanded: true
aria-expanded: false

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Pour les attributs data-*, il est plus pratique d’utiliser la propriété dataset.
  • Un attribut booléen ne se désactive qu’avec removeAttribute(). La valeur "false" signifie toujours que l’attribut est présent.
  • Pour les classes, utilisez classList, et pour les styles, style, plutôt que d’écraser entièrement les attributs class et style.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.