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

Meu FOR não itera

Olá!

Eu não consigo entender porque o meu loop for não está iterando.

//Cálculo do IMC começa aqui

let paciente = document.querySelectorAll(".paciente");
console.log(paciente);
console.log(paciente.length);


for (i = 0; i < paciente.length; i++) {

    paciente = paciente[i];

    let tdPeso = paciente.querySelector(".info-peso");
    let peso = tdPeso.textContent;

    let tdAltura = paciente.querySelector(".info-altura");
    let altura = tdAltura.textContent;

    let pesoValido = true;
    let alturaValida = true;

    if (peso <= 0 || peso >= 1000 || altura >= 3 || altura <= 0) {
        alert("Peso ou altura inválida");
        console.log("Peso ou altura inválida");
        pesoValido = false;
        alturaValida = false;
        if (altura >= 3 || altura <= 0) {
            tdAltura.textContent = "Altura inválida";
        }
        if (peso <= 0 || peso >= 1000) {
            tdPeso.textContent = "Peso inválido";
        }
    }


    if (pesoValido && alturaValida) {
        const calculoImc = peso / (altura * altura);

        console.log(peso);
        console.log(altura);
        console.log(calculoImc);

        const tdImc = paciente.querySelector(".info-imc");

        tdImc.textContent = calculoImc;
    } else {
        alert("Cálculo do IMC não é possível");
        console.log(`Cálculo do IMC não é possível`);
    }
}
3 respostas
solução!

Dentro do seu for está transformando sua lista em variável paciente = paciente O certo é o um for assim for (i =0; i < pacienteS.length ; i++) { paciente = pacienteS[i] ;

Muito obrigado!

O importante em loop é a variável de controle, incrementar ou atualizar a variável de controle e a saída do loop usando a variável de controle, basicamente isso, então é importante nunca atribuir valores para a variável de controle que não seja o incremento ou atualização da mesma.

pode parecer óbvio e básico o que falei, mas é sempre bom ter isso em mente, espero ter ajudado.