3
respostas

aula 8 do javascript -

Boa tarde, na aula 8 do javascript surgiu uma duvida. Qual o motivo de declarar o for do paciente 2 vezes para cada if/else? Tentei sem declarar e não funcionou. Essa é a melhor opção?

// filtra.js

var campoFiltro = document.querySelector("#filtrar-tabela");

campoFiltro.addEventListener("input", function() {
    var pacientes = document.querySelectorAll(".paciente");

    if (this.value.length > 0) {
        for (var i = 0; i < pacientes.length; i++) {
            var paciente = pacientes[i];
            var tdNome = paciente.querySelector(".info-nome");
            var nome = tdNome.textContent;

            if (nome != this.value) {
                paciente.classList.add("invisivel");
            } else {
                paciente.classList.remove("invisivel");
            }
        }
    } else {
        for (var i = 0; i < pacientes.length; i++) {
            var paciente = pacientes[i];
            paciente.classList.remove("invisivel");
        }
    }
});
3 respostas

Nesse caso sim, pois cada for faz uma ação diferente. Você até poderia colocar a verificação dentro do for e deixar um único for, porém você iria para cada interação do for fazer uma verificação de if/else, sendo que você precisa fazer isso apenas uma vez.

ok, mas pq fazem coisas diferentes? ambos definem o paciente e ambos adicionam classe de css correto?

Sim, o que muda é a forma e quantidade de vezes que a verificação é feita. Imagina que tenho 100 pacientes, com dois for um no if e outro no else, dessa forma a comparação é feita apenas uma vez. Se eu fizer um for e o if/else dentro do for, farei a comparação para cada paciente ou seja 100 vezes.