Element.toggleAttribute()

Ajoute un attribut s’il est absent, ou le retire s’il est présent. Particulièrement utile pour les attributs booléens, comme hidden ou disabled.

Renvoie
true si l’attribut est présent après l’appel, sinon false.
Modifie l’original
Oui
Sur cette page

Exemple

#
JavaScript
const toggle = document.querySelector('#toggle')
const explanation = document.querySelector('#explanation')

toggle.addEventListener('click', () => {
  const hidden = explanation.toggleAttribute('hidden')
  toggle.textContent = hidden ? 'Afficher l’explication' : 'Masquer l’explication'
  console.log('hidden:', hidden)
})

toggle.click()
toggle.click()
Console
hidden: false
hidden: true

Le premier clic retire l’attribut hidden et affiche le paragraphe, le second le rajoute. Cliquez sur le bouton dans l’aperçu pour continuer à basculer l’explication.

Définition et utilisation

#

La méthode toggleAttribute() bascule la présence d’un attribut : si l’élément ne l’a pas, elle l’ajoute avec une valeur vide, et s’il l’a, elle le retire. Elle renvoie true si l’attribut est présent après l’appel, et false sinon.

Elle est surtout utile avec les attributs booléens, qui agissent par leur simple présence, par ex. hidden, disabled, required, readonly ou open. Leur valeur n’a pas d’importance, seule compte la présence de l’attribut. Elle fonctionne aussi avec vos propres attributs, par ex. data-active, que vous pouvez utiliser dans des sélecteurs CSS.

Le second argument, force, impose le résultat : true ajoute toujours l’attribut (ou laisse celui qui existe déjà), et false le retire toujours. Cela permet, en un seul appel, de définir l’état selon une condition, sans écrire de if avec setAttribute() et removeAttribute(). Cela fonctionne de façon similaire à classList.toggle(), mais pour les attributs.

Syntaxe

#
Syntaxe
element.toggleAttribute(name)
element.toggleAttribute(name, force)

Paramètres

#
  • name

    chaîne

    Le nom de l’attribut, par ex. "hidden" ou "disabled".
  • force

    booléen, optionnel

    true ajoute toujours l’attribut, et false le retire toujours.

Plus d’exemples

#
Forcer l’état avec le second argument
JavaScript
const nick = document.querySelector('#nick')
const join = document.querySelector('#join')

function updateButton() {
  join.toggleAttribute('disabled', nick.value.trim().length < 3)
  console.log('Bouton désactivé :', join.disabled)
}

nick.addEventListener('input', updateButton)
updateButton()

nick.value = 'Léa'
nick.dispatchEvent(new Event('input'))
Console
Bouton désactivé : true
Bouton désactivé : false

La condition décide de l’état du bouton sans aucun if. Tapez quelque chose dans le champ de l’aperçu, et le bouton s’activera ou se désactivera.

La valeur de l’attribut et le résultat de la méthode
JavaScript
const faq = document.querySelector('#faq')

console.log(faq.toggleAttribute('open'))
console.log(JSON.stringify(faq.getAttribute('open')))
console.log(faq.open)
console.log(faq.toggleAttribute('open', true))
console.log(faq.toggleAttribute('open', false), faq.open)
Console
true
""
true
true
false false

L’attribut ajouté a une valeur vide, car pour les attributs booléens, seule sa présence compte. Avec force à true, un attribut déjà présent reste simplement tel quel.

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 booléens (hidden, disabled, required), utilisez toggleAttribute() ou removeAttribute(). setAttribute("hidden", "false") cache quand même l’élément.
  • Le second argument transforme le basculement en affectation directe : toggleAttribute("disabled", !formValid) donne immédiatement le bon état.
  • Pour de nombreux attributs booléens, les propriétés de l’élément fonctionnent tout aussi bien, par ex. button.disabled = true ou panel.hidden = false.

Entrées associées

#

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