Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro

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

function calcularIMC(paciente, peso, altura, tdIMC) {
  if (peso <= 0 || peso >= 1000) {
    console.log("Peso invalido");
    tdIMC.textContent = "Peso invalido";
    paciente.classList.add("paciente-invalido");
  } else if (altura <= 0 || altura >= 3.0) {
    console.log("Altura invalida");
    tdIMC.textContent = "Altura invalida";
    paciente.classList.add("paciente-invalido");
  } else {
    tdIMC.textContent = parseFloat(peso / altura ** 2).toFixed(2);
  }
}
const pacientes = document.querySelectorAll(".paciente");

let peso;
let altura;
let imc;

for (let i = 0; i <= pacientes.length; i++) {
    paciente = pacientes[i];

  peso = (paciente.querySelector(".info-peso").textContent);
  altura = (paciente.querySelector(".info-altura").textContent);
  tdIMC = (paciente.querySelector(".info-imc"));

  if (peso <= 0 || peso >= 1000) {
    console.log("Peso invalido");
    tdIMC.textContent = "Peso invalido";
    paciente.classList.add("paciente-invalido");
  } else if (altura <= 0 || altura >= 3.0) {
    console.log("Altura invalida");
    tdIMC.textContent = "Altura invalida";
    paciente.classList.add("paciente-invalido");
  } else {
    tdIMC.textContent = parseFloat(peso / altura ** 2).toFixed(2);
  }

}

titulo.addEventListener("click", mostraMensagem);

function mostraMensagem() {
  console.log("Olá eu fui clicado!");
}

Esse codigo quando executo ha um erro na linha 22, não entendo o por que dele acontecer e tambem não sei como resolve-lo.

1 resposta
solução!

Oi Michel, tudo bem?

Dentro do laço de repetição, você não declarou a variável paciente, está utilizando-a sem nenhuma declaração, portanto o correto seria:

let paciente = pacientes[i];

Além disso, no próprio laço de repetição, você está fazendo dessa maneira:

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

Vamos supor que pacientes.length seja igual a 6. Como o array possui o índice inicial de zero, os índices seriam: 0, 1, 2, 3, 4 e 5, totalizando em 6 elementos. O 6 não é incluído, mas você está fazendo com que seja incluído, causando um erro pois esse elemento de índice 6 não existe. Portanto, o correto seria:

for (let i = 0; i < pacientes.length; i++) { // 0 até 5, por exemplo
}

Espero ter ajudado, bons estudos =)