|
|
@@ -0,0 +1,33 @@
|
|
|
+On aurait pu faire la même chose que dans l'exemple précédent, en utilisant des classes CSS.
|
|
|
+
|
|
|
+<blockquote>La propriété <code>className</code> d'un élément contient la classe
|
|
|
+(ou les classes séparées par des espaces) de celui-ci.
|
|
|
+
|
|
|
+Dans l'en-tête (`head`) du HTML, ajoute ceci :
|
|
|
+```html
|
|
|
+<style>
|
|
|
+.ok-vegane { color: green; }
|
|
|
+.pas-vegane { color: red; font-weight: bold; }
|
|
|
+</style>
|
|
|
+```
|
|
|
+Remplace **juste la boucle for** de la section précédente par celle-ci :
|
|
|
+```javascript
|
|
|
+for(var i = 0 ; i < items.length ; i++) {
|
|
|
+ var ingredient = ingredients[i];
|
|
|
+ items[i].className = isItVegan(ingredient) ?
|
|
|
+ 'ok-vegane' : 'pas-vegane';
|
|
|
+}
|
|
|
+```
|
|
|
+Note l'utilisation de l'opérateur ternaire, qui ne doit pas t'être inconnu puisqu'il
|
|
|
+a la même syntaxe en Java :
|
|
|
+```javascript
|
|
|
+valeur = condition ? valeurSiVrai : valeurSiFaux;
|
|
|
+```
|
|
|
+
|
|
|
+Tiens, une question : précédemment, on a manipulé les styles avec la propriété `style` de l'élément,
|
|
|
+ce qui est cohérent avec l'attribut `style` sur une balise. Pourquoi donc est-ce `className` ici, plutôt que `class`
|
|
|
+comme on aurait pu s'y attendre ?
|
|
|
+
|
|
|
+La réponse est simple : le mot-clé `class` est un mot réservé en JavaScript ! À vrai dire,
|
|
|
+il n'était pas utilisé jusqu'à ES5, la version précédente du langage. Mais comme on l'a déjà dit, ES6, qui commence à être
|
|
|
+bien supporté par les navigateurs, permet de déclarer des classes (au sens programmation objet) avec `class`.
|