Testei aqui e vi que ele calcula o IMC certinho dos registros que já estão na tabela(fixos no html), mas quando adiciona um novo paciente pelo formulário, a coluna IMC vem zerada.
Isso acontece porque o código JavaScript que calcula o IMC é chamado apenas uma vez, quando a página é carregada pelo navegador.
Pra resolver esse problema, temos que chamar o código que calcula o IMC também quando um novo paciente for adicionado no formulário.
Dá para fazer isso adicionando todo o código de caclulo de IMC em uma função:
function calcularIMCDeTodosOsPacientes() {
var pacientes = document.querySelectorAll(".paciente");
for(var i=0;i<pacientes.length;i++){
var paciente = pacientes[i];
var tdpeso = paciente.querySelector(".info-peso");
var peso = tdpeso.textContent;
var tdAltura = paciente.querySelector(".info-altura");
var altura = tdAltura.textContent;
var tdImc = paciente.querySelector(".info-imc");
var pesoEnvalido = true;
var alturaEnvalido = true;
if(peso < 0 || peso >= 300){
pesoEnvalido = false;
tdImc.textContent = "Peso inválido!";
//paciente.style.backgroundColor = "lightcoral"; // alterando cor de fundo da linha. (Obs.:background-color esse padrão do CSS para o javaScript quando tem duas palavaras a união entre as daus deve ser feito com letra MAIÚSCULA).
paciente.classList.add("paciente-invalido"); // classList.add: adiciona uma classe nova no meu html.
}
if(altura < 0 || altura >= 2.8){
alturaEnvalido = false;
tdImc.textContent = "Altura inválida!";
//paciente.style.backgroundColor = "lightcoral";
paciente.classList.add("paciente-invalido");
}
if(alturaEnvalido && pesoEnvalido){
var imc = calcularImc(peso,altura);
console.log(imc);
tdImc.textContent = imc;
}
function calcularImc(peso,altura){
var imc = 0;
imc = peso / (altura * altura);
return imc.toFixed(2);// toFixed: limita o número de casas decimais.
}
}
}
calcularIMCDeTodosOsPacientes();
E chamar essa função após o cadastro pelo formulário:
botaoAdicionar.addEventListener("click",function(event){
//aqui continua o seu codigo da funcao...
//chama a nova funcao para calcular o IMC dos pacientes:
calcularIMCDeTodosOsPacientes();
});