Aller au contenu

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
<div id="demo"></div>
JavaScript
// 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é classList. Cette propriété contient plusieurs méthodes qu'on peut utiliser pour modifier les classes :

Exemple d'utilisation de 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

On peut créer nos propre attribut dans une balise html et les utiliser entre autre pour stocker des informations reliées à la balise. Par convention le nom de l'attribut commencera par data- suivi du nom que vous voulez utiliser. Ensuite on peut y accéder en JavaScript de la même manière que les autres attributs.

html
<!-- Ón ajoute l'attribut data-key à la div et lui donne la valeur 65 -->
<div data-key="65" class="note">
    ...
</div>
JavaScript
// Sélection du premier élément avec la classe note
let note = document.querySelector('.note');
// Récupération de la valeur de l'attribut data-key de cet élément
console.log(note.getAttribute('data-key')); // 65