11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

j'ai une liste à puce qui affiche 5 lignes ainsi qu'un bouton reset et un button filter.
-Quand je click sur filter, toutes les lignes contenant le mot "Christmas" restent apparentes.
-Quand je click sur "reset" les lignes cachées devraient réapparaitre, mais ce n'est pas le cas.

Je sens qu'il manque un truc petit et insignifiant mais qui fait toute la différence entre un code qui fonctionne et le mien Smiley smile

Merci pour votre aide, voici le code:


<ul>
    <li>Happy Birthday!</li>
    <li>Merry Christmas my Love</li>
    <li>A happy Christmas to all the Family</li>
    <li>You're all I want for Christmas</li>
    <li>Get well soon</li>
  </ul>

  <button class="reset">Reset</button>
  <button class="filter">Filter</button>



var elementListe = document.querySelectorAll("li");

function filter() {
  for (var i = 0; i < elementListe.length; i++) {
    var eltListe = elementListe[i].textContent.toLowerCase();

    if (eltListe.indexOf("christmas") === -1) {

      elementListe[i].hidden = "true";
    }
  }
}

function reset() {
  document.querySelectorAll('li').hidden = 'false';
}

var btnFilter = document.querySelector(".filter");
btnFilter.addEventListener("click", filter);

var btnReset = document.querySelector('.reset');
btnReset.addEventListener('click', reset);
Et ton bug, c'est dans le reset()

document.querySelectorAll('li') te renvoit une liste.. Tu peux pas faire .hidden sur une liste. mais tu peux faire .hidden sur un element HTML. donc faut parcourir ta liste.
Meilleure solution
PapyJP a écrit :

Ce que je comprends de ce texte, c'est que c'est à proscrire dans le cas qui nous intéresse.
Personnellement j'utilise une classe
.hidden {display:none;}

J'ajoute ou supprime cette classe par JS dans les éléments en question.


Oui je fais la même chose également
Jean-Pierre-Bruneau a écrit :

L'un cache sans changer la mise en page l'autre non !!!!

L'un cache, sans changer la mise ne page, l'autre oui Smiley smile
Bonjour à tous et merci pour vos réponses, désolé du temps pris pour vous répondre.

-citation : "D'où sort le .hidden = "true"; ? il ne me semble pas connaitre cette syntaxe..."

je cherchais dans les valeurs renvoyées par la console et je faisais des essais en fait.

-citation "Et ton bug, c'est dans le reset() "
effectivement le code fonctionne à présent

Merci JP Bruneau je note sa dans un coté de ma tête Smiley smile