Bonsoir,

Les amis je viens demander votre aide car... j'ai trop mal de tête à force de chercher ou est mon erreur...

En gros je cherche comment faire une pagination pour une liste d'étudiants. Tous va bien sauf que quand je veux appliquer ma méthode splice à mon tableau qui contient toutes la liste des étudiants bah je rencontre une erreur qui est

splice is not a function.

    var displayStudents = function (studentList) {
        // Quand je clique sur un bouton de la pagination
        var buttons = document.querySelectorAll(".pagination a");
        for (var i = 0; i < buttons.length; i++) {
            buttons[i].addEventListener("click", function () {
                var linkNumber = this.innerText;
                var studentsToHide = document.querySelectorAll(".student-item");
                studentsToHide.splice((linkNumber - 1) * 10, 10)
                console.log(studentsToHide);
            })
        }
    }

pourquoi cela fait ça ? est-ce que le javascript ne peut pas filtrer un tableau d'éléments html ?

Merci :)

2 réponses


queryselector te retour un tableau de type nodelist qui ne contient pas les meme methode que des array tu doit convertir ton tableau de nodelist en array tu peut faire un truc du genre

var nativeSlice = [].slice // la méthode de conversion

function convert(selector){
  var list = document.querySelectorAll(selector)
  return nativeSlice.call(list)
}

ca converti les nodelist en array pour avoir toutes les methodes array

Pour ce genre de chose je fait comme ça :

var displayStudents = function (studentList) {
        // Quand je clique sur un bouton de la pagination
        var buttons = document.querySelectorAll(".pagination a");
        for (var i = 0; i < buttons.length; i++) {
            var button = buttons[i].

            button.addEventListener("click", function () {
                var linkNumber = this.innerText;
                var studentsToHide = document.querySelectorAll(".student-item");
                studentsToHide.splice((linkNumber - 1) * 10, 10)
                console.log(studentsToHide);
            })
        }
    }