CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Javascript, paramètre fonction flechée retourne undefined

DébutPage précedente
1
Page suivantePage suivante
hermeticaa hermeticaa
MP
Niveau 8
29 juin 2022 à 11:25:29

Salut les kheys, je fais une fonction qui va filtrer des éléments du DOM en utilisant simplement un système de classe, le soucis, est que le paramètre de ma fonction el donne un undefined je ne comprends pas, j'ai jamais eu ce soucis auparavant voici le code :

const buttons = document.querySelectorAll('.kc-filtrestuiles--filters button');
const elements = document.querySelectorAll('.kc-filtrestuiles--content article');


    const filter = el =>{
    for(j=0;j<elements.length;j++){
        if(elements[j].classList.contains(el)){
            elements[j].classList.toggle('revealed');
        }
        else {
            elements[j].classList.remove('revealed');
            elements[j].classList.add('hidden');
        }
    }
   }

    for(i=0;i<buttons.length;i++){
        buttons[i].addEventListener('click', function(){
            filter(buttons[i]);
        }
    , false);
    }
Message édité le 29 juin 2022 à 11:25:57 par hermeticaa
deepblue deepblue
MP
Niveau 13
29 juin 2022 à 13:42:51

À vue de pif :

  • `elements[j].classList.contains(el)` ne pourra pas fonctionner car `el` n'est pas une chaine de caractère mais un Element (https://developer.mozilla.org/fr/docs/Web/API/Element)
  • Dans ton callback de buttons[i].addEventListener, `buttons[i]` représentera toujours la dernière valeur que `buttons[i]` va avoir

Sans avoir testé, un truc comme ça pourra aider. Il faudra cependant définir ce que tu veux récupérer du bouton cliqué et tu que utilises ici `lement.classList.contains(button.??????)`.

const buttons = document.querySelectorAll('.kc-filtrestuiles--filters button')
const elements = document.querySelectorAll('.kc-filtrestuiles--content article')

const filter = (e) => {
    const button = e.target

    for (let element of elements) {
        if (element.classList.contains(button.??????)) {
            element.classList.toggle('revealed')
        } else {
            element.classList.remove('revealed')
            element.classList.add('hidden')
        }
    }
}


for (let button of buttons) {
    buttons.addEventListener('click', filter, false)
}
DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment