2
respostas

Problemas com forEach no Firefox - Atividade 7 da aula 8

Na atividade 7 da aula 8, tentei buscar os pacientes usando o forEach() para percorrer o array retornado pelo querySelectorAll(".paciente"). Entretanto, quando executo o código no firefox é informado um erro (TypeError: pacientes.forEach is not a function), em outros browser tudo normal. Pesquisei no site da Mozilla e parece que o forEach é suportado apenas na 5ª edição do JS. Testei até na versão 24.

Isso é erro de compatibilidade ou fiz algo errado?

//Mãos na massa: buscando pacientes - Aula 8 Atividade 7
var campoFiltro = document.querySelector("#filtrar-tabela");
campoFiltro.addEventListener("input", function(){
    var pacientes = document.querySelectorAll(".paciente");
    var valorDoCampo = this;

    if(this.value.length > 0){
        //torna linhas invisíveis
        pacientes.forEach(function(paciente){
            var tdNome = paciente.querySelector(".info-nome");    
            var nome = tdNome.textContent;
            var expressao = new RegExp(valorDoCampo.value, "i");
            if(expressao.test(nome)){
                paciente.classList.remove("invisivel");
            }else{
                paciente.classList.add("invisivel");
            }

        });
    }else{
        //torna linhas visíveis
        pacientes.forEach(function(paciente){
            paciente.classList.remove("invisivel");
        });
    }
});
2 respostas

Olá Uesley,

Teria que ver o seu código html. Verifica se realmente o pacientes está como array. Dá um typeof nele para verificar.

Eu acredito que está ocorrendo esse erro por não se tratar de um array, então não pode ser utilizado o forEach.

Boa noite, Uesley.

Tente passar a palavra this como argumento do seu forEach, assim:

pacientes.forEach(function(paciente){

}, this);