Événement click

Montrer des éléments html

Le texte des théorèmes dans le code ci-dessous est caché au départ. Votre mission est d'ajouter le code d'un script qui permette de déclencher l'affichage du texte d'un théorème lors d'un clic sur le nom du théorème.

Le code à modifier.

Une solution

Un code possible :

Une autre solution

On utilise querySelector pour sélectionner l'élément de classe titre dans chacun des théorèmes. Pour sélectionner dans chacun des théorèmes, on n'utilise pas document.querySelector mais theoremes[i].querySelector.

Montrer, cacher un élément html

Dans le code ci-dessous :

  • Un clic sur le titre d'un théorème montre le texte du théorème (mais pas la démonstration) si ce texte est caché et cache le texte du théorème (et la démonstration) si le texte est visible.
  • Si le texte est visible, un clic sur le texte cache ou montre la démonstration suivant qu'elle est visible ou non.

Le code à modifier.

Copiez et collez ce texte dans un fichier html vierge pour vos tests.

Une solution

Page solution (rappel: clic droit, code source de la page pour voir le code).

Autre page solution

getComputedStyle

Dans la page proposée comme solution, vous aurez sans doute remarqué la nécessité de deux clicks sur un titre pour afficher le texte correspondant. Pourquoi?

La raison est que textes[i].style.display est en fait au départ non affecté. Au premier click, le test dans if(textes[i].style.display == "none") est donc à false et c'est donc la partie else qui s'exécute (textes[i].style.display = "none";), au second click la valeur de textes[i].style.display est donc bien "none".

Pour en savoir plus vous pouvez par exemple lire cette page du cours OpenClassRoom. Vous y découvrirez qu'une solution possible pour résoudre ce problème est d'utiliser getComputedStyle(). Voir par exemple le code de cette page qui règle le problème avec getComputedStyle().