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

onde está o erro??

Ola Pessoal fv me ajudem , ja quebrei a cabeça e não vejo aqui meu erro, ele dá no pacientes[item].querySelector(".info-altura"); pacientes[item].querySelector(".info-peso"); pacientes[item].querySelector(".info-imc");

var pesoValido = true;
var alturaValido = true;
var titulo = document.querySelector(".titulo");
titulo.textContent = "SITE TONY";


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


pacientes.forEach(function(item){


    var tdPeso = pacientes[item].querySelector(".info-peso");
    var peso = tdPeso.textContent;
    var tdAltura = pacientes[item].querySelector(".info-altura");
    var altura = tdAltura.textContent;

    var tdImc = pacientes[item].querySelector(".info-imc");

        if(peso <= 1 || peso >= 500 ) {
         peso.textContent = "Peso Invalido";
        tdImc.textContent = "Valor Invalido de Peso"
        pesoValido = false;
        }
        if(altura <= 0.20 || altura >=3) {
        altura.textContent = "Altura Invalida";
        tdImc.textContent = "Valor Invalido de Altura"
        alturaValido = false;
        }
        if(pesoValido && alturaValido) {
         var totalimc = tdPeso/(tdAltura*tdAltura);
        tdImc.textContent = totalimc;
        }

}); //fim do foreach




console.log(pacientes);

algo simples, não entendo

2 respostas
solução!

Olá Antônio, tudo bem com você?

Acredito que você misturou dois tipos de laços e acabou trazendo problemas para o seu código, provavelmente dar uma olhada no forEach novamente pode te auxiliar :)

Mas em relação ao código:

Quando utilizamos o forEach já temos a <td> em cada iteração, então essa parte :

var tdPeso = pacientes[item].querySelector(".info-peso");

Acaba não fazendo muito sentido, a gente iria fazer algo parecido se utilizássemos o for e item fosse uma variável numérica para pegar do array de pacientes alguma posição :)

Dessa forma podemos trocar isso, para:

var tdPeso = item.querySelector(".info-peso");

E vamos repetir isso para o tdAltura e tdImc, dessa forma já resolvemos o maior problema!

Agora o segundo, é como você está fazendo o cálculo do IMC, veja:

var totalimc = tdPeso/(tdAltura*tdAltura);

Na verdade temos que pegar as próprias variáveis que você definiu, no caso peso e altura que guardam a informação do textContent de cada <td>

Corrigindo esses dois problemas o seu código já deve estar funcionando perfeitamente

Mas é totalmente normal se confundir com os laços, fique tranquilo!

Abraços e Bons Estudos :)

Geovani bom dia obrigaduuuu, é isto mesmo, ate este curso eu só havia conhecido o foreach, sem pratica-lo, então estou refazendo o curso do zero, e onde tiver a opção de usar o for, irei usar o foreach... mas depois desta aula, eu consegui aprender muito.

thanksssss