1
resposta

O calculo replicou o mesmo valor do primeiro que é 25 para os outros imc's, no que posso ter errado?

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

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



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

    var paciente = pacientes[i];

var tdPeso = document.querySelector(".info-peso");
var tdAltura = document.querySelector(".info-altura");
var peso = tdPeso.textContent;
var altura = tdAltura.textContent;
var imc = peso / (altura * altura);
var tdImc = paciente.querySelector(".info-imc");
tdImc.textContent = imc;
var pesoEhValido = true;
var alturaEhValida= true;


if (peso <= 0 || peso >= 1000) {
    console.log("Peso inválido.");
    tdImc.textContent = "Peso inválido.";
    pesoEhValido = false;
}

if (altura <= 0 || altura >=3) {
    console.log("Altura inválida");
    tdAltura.textContent = "Altura Inválida.";
    alturaEhValida = false;
}

if (pesoEhValido && alturaEhValida) {
    var imc = peso / (altura * altura);
    tdImc.textContent = imc;
} else {
    tdImc.textContent = "Altura ou peso inválido.";
}

}
1 resposta

Olá Paulo, tudo bem com você?

Peço desculpas pela demora em lhe responder.

O comportamento apresentado está acontecendo devido à tentativa de seleção das classes info-peso e info-altura no document e não no paciente. Desta forma, durante a execução do laço for as variáveis tdPeso e tdAltura sempre receberão a primeira td que faz o das classes info-peso e info-altura, neste caso os dados do primeiro paciente.

Para corrigir o comportamento apresentado, basta informar que as classes info-peso e info-altura estão sendo selecionadas a partir da variável paciente que contém classe paciente. Assim a cara interação do for os valores recebidos serão os valores de cada paciente.

No arquivo js/principal.js dentro do laço for modifique a atribuição das variáveis tdPeso e tdAltura, deixando como abaixo:

var tdPeso = paciente.querySelector(".info-peso");
var tdAltura = paciente.querySelector(".info-altura");

Realizados as mudanças acima, salve o arquivo principal.js e abra no navegador o arquivo index.html, verifique se os valores da coluna IMC serão apresentados conforme esperado.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!