Manipuler les attributs HTML en Javascript
On se rappelle qu'un élément HTML peu avoir des attributs, comme par exemple les attributs id, src et alt de la balise image suivante :
<img src="assets/images/background.jpg" alt="Image de Drummer" id="img-fond">
On peut en Javascript accéder à ces attributs et les manipuler grâce à diverses méthodes.
- element.hasAttribute("nomAttribut") : Vérifier si l'attribut existe
- element.getAttribute("nomAttribut") : Récupérer la valeur de l'attribut
- element.setAttribute("nomAttribut", "saValeur") : Ajouter ou modifier la valeur d'un attribut
- element.removeAttribute("nomAttribut") : Supprimer un attribut
Prenons par exemple un div avec seulement un attribut id
HTML
JS
| // Je récupère la div dans une variable
let divDemo = document.getElementById("demo");
console.log(divDemo.hasAttribute('id')); // true
console.log(divDemo.hasAttribute('title')); // false
console.log(divDemo.getAttribute('id')); // demo
console.log(divDemo.getAttribute('title')); // null
console.log(divDemo.setAttribute('title', 'Ma div principale'));
console.log(divDemo.getAttribute('title')); // Ma div principale
console.log(divDemo.removeAttribute('title'));
console.log(divDemo.getAttribute('title')); // null
|
Ajouter ou supprimer une classe
Pour travailler avec les classes d'un élément on va plutôt utiliser la propriété classsList
. Cette propriété contient plusieurs méthodes qu'on peut utiliser pour modifier les classes :
Exemple classList |
---|
| // Je récupère la div dans une variable
let divDemo = document.getElementById("demo");
// Ajoute la classe nouvelleClasse
divDemo.classList.add("nouvelleClasse");
// Supprime la classe ancienneClasse
divDemo.classList.remove("ancienneClasse");
// Ajout la classe visible si elle n'est pas déjà présente, sinon la supprime
divDemo.classList.toggle("visible");
// Remplace la classe rouge par bleu
divDemo.classList.replace("rouge", "bleu");
// Teste si la classe patate existe, retourne true ou false
console.log(divDemo.classList.contains("patate"));
|
Les attributs data
Une chose vraiment utile avec les attributs est qu'on peut en ajouter des personnalisés. Il suffit d'utiliser le préfix data- suivi du nom de l'attribut que l'on veut ajouter dans la balise de l'élément html.
HTML
<div data-key="65" class="note">
...
</div>
JS
let note = document.querySelector('.note');
console.log(note.getAttribute('data-key')); // 65