1
resposta

IMC não aparece...

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)
});
1 resposta

Opa, tudo bem?

na função

function calculaImc(peso, altura) {
    var imc = (peso/altura2);
    return imc.toFixed(2);
}

Você está buscando altura2, e o certo seria apenas altura. Faça essa alteração e verique o código, testei aqui e funcinou normalmente.

Se tua dúvida foi respondida com esse comentário, peço que marque minha resposta como "✓ Marcar Solução". Qualquer dúvida estou à disposição.