Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

this.value e parametro paciente.

Boa noite senhores, acabei ficando com duas dúvidas na aula 8

foi sugerido que na comparação entre o nosso campo de busca no formulário usássemos a seguinte comparação.

if(nome != this.value){
//codigo
}

porém quando estou debbugando o codigo recebo a informação que meu this.valeu está undefined, outra dúvida é que, utilizei o forEach no array de pacientes e passei paciente como parâmetro da função, mas não entendi como paciente veio preenchido sendo que não buscamos ele nenhum momento com o querySelector, poderiam me ajudar ? Segue o código abaixo funcionamento, mas sem o this.value.

Obrigado.

var busca = document.querySelector("#buscar-paciente");

busca.addEventListener("input",function(){

    var pacientes = document.querySelectorAll(".paciente");


    if(this.value.length > 0){

        pacientes.forEach(function(paciente){

        var tdNome = paciente.querySelector(".info-nome");

        var nome = tdNome.textContent;

        if (nome != busca.value) {
            paciente.classList.add("invisivel");
        } else {
            paciente.classList.remove("invisivel");
        }

    });
}else{

    pacientes.forEach(function(paciente){

        paciente.classList.remove("invisivel");

    });

}

});
1 resposta
solução!

Quando percorremos o array pacientes com a função forEach, o parâmetro que você recebe na função de callback pertence a este array e é passado automaticamente por debaixo dos panos.

O this da comparação sugerida não funciona para você justamente por causa da função forEach, isso porque a referência da variável this é o objeto global window, que não possui a propriedade value, dai vem o undefined. Troque este forEach por um for "normal".