Fala, Cauan! Tudo bem?
Eu observei seu código e vou te passar um feedback do que notei que pode está inconsistente com o realizado pelo instrutor na aula.
Logo na primeira linha dentro do laço for quando você declara a variável pacientes tem um pequeno erro aí. O nome correto da variável é paciente. Como você fez a declaração com var, pode acabar sobrescrevendo a variável pacientes sem nem perceber. O certo seria:
var paciente = pacientes[i];
Outro ponto é a declaração da variável tdImc
. Você fez a declaração dela dentro de um bloco if, e isso pode causar erros por conta do escopo. Eu sugiro que declare essa variável logo abaixo da variável altura
, assim:
var tdImc = document.querySelector(".info-imc")
Continuando, dentro dos blocos if em que você verifica o peso e a altura, para saber se eles são válidos, está utilizando a variável tdPeso
e a variável tdAltura
para exibir uma mensagem de erro. Mas o correto seria usar a variável tdImc
, assim:
//...
if (peso <= 0 || peso >= 500) {
tdImc.textContent = "Peso inválido!"
pesoValidar = false;
}
if (altura <= 0 || altura >= 3.00) {
tdImc.textContent = "Altura inválida!"
alturaValidar = false;
}
//...
Pois o elemento onde você exibe a mensagem de peso ou altura Inválida é o no tdImc
.
E no último bloco if, onde você faz efetivamente o cálculo do IMC, você está declarando o tdImc
aqui, por isso o erro acontece, por uma questão de escopo local. Como sugerido, você pode declarar a fora, tdImc
e não terá mais esse problema.
Inclusive pode arredondar as casas decimais do cálculo do IMC para apenas 2, desse jeito
if (pesoValidar && alturaValidar) {
var imc = peso / (altura * altura);
tdImc.textContent = imc.toFixed(2);
}
E é isso!
O código final deve ser parecido com esse aqui:
for (var i = 0; i < pacientes.length; i++) {
var paciente = pacientes[i];
var tdPeso = paciente.querySelector(".info-peso");
var tdAltura = paciente.querySelector(".info-altura");
var tdImc = paciente.querySelector(".info-imc");
var peso = tdPeso.textContent;
var altura = tdAltura.textContent;
let pesoValidar = true;
let alturaValidar = true;
if (peso <= 0 || peso >= 1000) {
console.log("Peso inválido");
tdImc.textContent = "Peso inválido!";
pesoValidar = false;
}
if (altura <= 0 || altura >= 3.0) {
console.log("Altura inválida");
tdImc.textContent = "Altura inválida!";
alturaValidar = false;
}
if (pesoValidar && alturaValidar) {
var imc = peso / (altura * altura);
tdImc.textContent = imc.toFixed(2);
}
}
Abração!