Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Removendo Pacientes erro no javascript

Estou com um problema somente no Chrome, Versão 49.0.2623.87, que quando rodo o script para remover paciente gera o seguinte erro:

Uncaught TypeError: pacientes.forEach is not a function

E o mesmo script roda no Firefox. Copiei o arquivo da aula e continua dando problema. Segue trecho:

var pacientes = document.querySelectorAll(".paciente");
console.log(pacientes);
pacientes.forEach(function(paciente) {
    paciente.addEventListener("dblclick", function() {
        this.remove();
    });
});
4 respostas

Oi Taynan, tudo bem? Posta pra gente o que o seu console.log(pacientes); está imprimindo no terminal por favor?

No console do Chrome está assim:

NodeList[5]
0
:
tr#primeiro-paciente.paciente
1
:
tr.paciente
2
:
tr.paciente
3
:
tr.paciente
4
:
tr.paciente
length
:
5
__proto__
:
Object
solução!

Taynan, investiguei um pouco aqui e descobri o motivo do seu problema. O document.querySelectorAll não retorna exatamente um Array básico, se fosse, funcionaria normalmente seu código. Ele retorna o que então? Um NodeList, que é um objeto parecido com Array, é uma coleção de elementos.

O forEach dos arrays é suportado desde as primeiras versões do chrome, porém, o forEach para o NodeList só veio a partir do Chrome 51, isso de acordo com o MDN (https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach)

Sendo assim, basta atualizar seu navegador e estará tudo certo. Seu Firefox funciona por que a versão dele é acima da 50, onde o forEach já é suportado. Testa pra gente?

Wanderson, atualizei o chrome e funcionou. Obrigado pela ajuda.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software