Não consigo adicionar o imc na célula correta ao clicar no botão, meu código está um pouco diferente, porque tentei fazer algumas etapas por mim mesmo. Sei que justamente por isso, apresenta este defeito, mas já assisti a aula 3 vezes e não consigo descobrir o erro.
Esse é o trecho do imc:
var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";
// PARTE 1: Cálculo do IMC automatizado
var pacientes = document.querySelectorAll(".paciente"); //#paciente1 pra captar id=paciente1
for (var c = 0; c < pacientes.length; c++) {
var paciente = pacientes[c];
var tdPeso = paciente.querySelector(".info-peso"); // ponto pra captar class
var tdAltura = paciente.querySelector(".info-altura");
var tdImc = paciente.querySelector(".info-imc");
var peso = tdPeso.textContent;
var altura = tdAltura.textContent;
var imc = valida(peso, altura);
}
function calculaImc(peso, altura) {
var imc = (peso/altura2);
return imc.toFixed(2);
}
function valida(peso, altura) {
var pesoValido = true
var alturaValida = true
if(peso < 0||peso >= 400) {
alert("Peso inválido");
pesoValido = false;
tdImc.textContent = "Peso inválido!";
paciente.classList.add("paciente-invalido");
}
if(altura < 0||altura >= 3) {
alert("Altura inválida");
alturaValida = false;
tdImc.textContent = "Altura inválida!";
paciente.classList.add("paciente-invalido");
}
if(pesoValido && alturaValida) {
tdImc.textContent = calculaImc(peso, altura);
// manda a informação de volta
}
}
Este é o trecho do form:
// PARTE 2: Fazer o botão 'Adicionar' inserir nova linha
// 1 - Selecionando o botão pelo id #adcionar-paciente
var botao = document.querySelector("#adicionar-paciente");
// 2 - Adicionando uma função ao evento clicar
botao.addEventListener("click", function(event) {
event.preventDefault();
// 3 - Selecionando o formulário pelo id ("#form-adiciona")
var form = document.querySelector("#form-adiciona");
var paciente = obtemPaciente(form);
function obtemPaciente(form) {
paciente = {
nome: form.nome.value,
peso: form.peso.value,
altura: form.altura.value,
gordura: form.gordura.value,
imc: valida(form.peso.value, form.altura.value)
}
return paciente
}
// 4 - Criar uma linha na tabela (tr = table row)
var pacienteTr = document.createElement("tr");
// 5 - Criar as células de dados (td = table data)
var nomeTd = document.createElement("td");
var pesoTd = document.createElement("td");
var alturaTd = document.createElement("td");
var gorduraTd = document.createElement("td");
var imcTd = document.createElement("td");
// 6 - Transferindo o conteúdo das variáveis para cada table data (td)
nomeTd.textContent = nome;
pesoTd.textContent = peso;
alturaTd.textContent = altura;
gorduraTd.textContent = gordura;
imcTd.textContent = valida(peso, altura)
// 7 - Fazer a linha (tr) agregar em si cada célula de dados (td)
pacienteTr.appendChild(nomeTd);
pacienteTr.appendChild(pesoTd);
pacienteTr.appendChild(alturaTd);
pacienteTr.appendChild(gorduraTd);
pacienteTr.appendChild(imcTd);
// 8 - Selecionar a tabela no documento html
var tabela = document.querySelector("#tabela-pacientes");
// 8 - Inserir a linha (tr) à tabela
tabela.appendChild(pacienteTr)
});