1
resposta

IMC não calcula após a organização do código.

// imc.js

var pacientes = document.querySelectorAll (".paciente");

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

    var paciente = pacientes[i];

    // Peso
    var tdPeso = paciente.querySelector (".info-peso");
    var peso = tdPeso.textContent;

    // Altura
    var tdAltura = paciente.querySelector (".info-altura");
    var altura =  tdAltura.textContent;

    // Selecionando a coluna do IMC
    var tdImc = paciente.querySelector (".info-imc");
    // var imc = peso / (altura * altura);

    // Validação das medidas.
    var pesoValido = true;
    var alturaValida = true;

    if (peso <= 0 || peso >= 300) {
        console.log ("Peso inválido!");
        pesoValido = false;
        tdImc.textContent = "Peso inválido!";
        paciente.classList.add ("paciente-invalido")
    }

    if (altura <=0 || altura >= 3.00) {
        console.log ("Altura inválida!");
        alturaValida = false;
        tdImc.textContent = "Altura inválida!";
        paciente.classList.add ("paciente-invalido")
    }

    if (pesoValido && alturaValida) {
        var imc = calculaImc (peso, altura);
        tdImc.textContent = imc;
    }
}

// Função para calcular o IMC.
function calculaImc (peso, altura) {

    var imc = 0;
    imc = peso / (altura * altura);

    return imc.toFixed(2);
}








//form.js

// ações no formulário.

// mudar título do h1.
var titulo = document.querySelector(".titulo");
titulo.textContent = "Pollyana Nutricionista";

// Ações do botão "adicionar".
var botaoAdicionar = document.querySelector ("#adicionar-paciente");

botaoAdicionar.addEventListener ("click", function (event) {
    event.preventDefault ();

    var form = document.querySelector ("#form-adiciona");

    // Extraindo informações do paciente do "form".
    var paciente = obtemPacienteDoFormulario (form);

    // Criar a <tr> e a <td>  do paciente;
    var pacienteTr = montaTr (paciente); 

    // Adicionar o paciente dentro da tabela.
    var tabela = document.querySelector ("#tabela-pacientes");
    tabela.appendChild (pacienteTr);

    //Resetar os campos após clicar no botão adicionar.
    form.reset ();
})

// Objeto paciente.
function obtemPacienteDoFormulario (form) {

    var paciente = {
        nome: form.nome.value,
        peso: form.peso.value,
        altura: form.altura.value,
        gordura: form.gordura.value,
        imc: calculaImc (form.altura.value, form.peso.value)
    }

    return paciente;
}

// Cria a <tr> com as classes também.
function montaTr (paciente) {

    var pacienteTr = document.createElement ("tr"); 

    //Criando classes aos elementos.
    pacienteTr.classList.add ("paciente");

    // Adicionar <td> nas <tr>, criando como filho do <tr> e monta uma <td> com as classes.
    pacienteTr.appendChild (montaTd (paciente.nome, "info-nome"));
    pacienteTr.appendChild (montaTd (paciente.peso, "info-peso"));
    pacienteTr.appendChild (montaTd (paciente.altura, "info-altura"));
    pacienteTr.appendChild (montaTd (paciente.gordura, "info-gordura")); 
    pacienteTr.appendChild (montaTd (paciente.imc, "info-imc"));

    return pacienteTr;
}

// Cria uma <td> juntamente com as classes.
function montaTd (dado, classe) {

    var td =document.createElement ("td");
    td.textContent = dado;
    td.classList.add (classe);

    return td;
}
1 resposta

Oi Dyogo tudo bem?

O problema estava lá no return do imc. Eu dei uma arrumada para você. Dá uma olhadinha.


<body>
        <h1 class="titulo"></h1>


        <form id="form-adiciona">
            <input name="nome" placeholder="nome"><br>
            <input name="peso" placeholder="peso"><br>
            <input name="altura" placeholder="altura"><br>
            <input name="gordura" placeholder="gordura"><br>

            <button id="adicionar-paciente">botaoAdicionar</button>
        </form>

        <table id="tabela-pacientes">
            <tr>
                <th>Nome</th>
                <th>Peso</th>
                <th>Altura</th>
                <th>Gordura</th>
                <th>IMC</th>
            </tr>
        </table>



    <script>
        var pacientes = document.querySelectorAll(".paciente");

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

            var paciente = pacientes[i];

            // Peso
            var tdPeso = paciente.querySelector(".info-peso");
            var peso = tdPeso.textContent;

            // Altura
            var tdAltura = paciente.querySelector(".info-altura");
            var altura = tdAltura.textContent;

            // Selecionando a coluna do IMC
            var tdImc = paciente.querySelector(".info-imc");
            // var imc = peso / (altura * altura);

            // Validação das medidas.
            var pesoValido = true;
            var alturaValida = true;

            if (peso <= 0 || peso >= 300) {
                console.log("Peso inválido!");
                pesoValido = false;
                tdImc.textContent = "Peso inválido!";
                paciente.classList.add("paciente-invalido")
            }

            if (altura <= 0 || altura >= 3.00) {
                console.log("Altura inválida!");
                alturaValida = false;
                tdImc.textContent = "Altura inválida!";
                paciente.classList.add("paciente-invalido")
            }

            if (pesoValido && alturaValida) {
                var imc = calculaImc(peso, altura);
                tdImc.textContent = imc;
            }
        }

        // Função para calcular o IMC.
        function calculaImc(peso, altura) {

            var imc = 0;
            imc = peso*1 / (altura * altura*1);

            return (imc*100000).toFixed(2);
        }
    </script>
    <script>

        //form.js

        // ações no formulário.

        // mudar título do h1.
        var titulo = document.querySelector(".titulo");
        titulo.textContent = "Pollyana Nutricionista";

        // Ações do botão "adicionar".
        var botaoAdicionar = document.querySelector("#adicionar-paciente");

        botaoAdicionar.addEventListener("click", function (event) {
            event.preventDefault();

            var form = document.querySelector("#form-adiciona");

            // Extraindo informações do paciente do "form".
            var paciente = obtemPacienteDoFormulario(form);

            // Criar a <tr> e a <td>  do paciente;
            var pacienteTr = montaTr(paciente);

            // Adicionar o paciente dentro da tabela.
            var tabela = document.querySelector("#tabela-pacientes");
            tabela.appendChild(pacienteTr);

            //Resetar os campos após clicar no botão adicionar.
            form.reset();
        })

        // Objeto paciente.
        function obtemPacienteDoFormulario(form) {

            var paciente = {
                nome: form.nome.value,
                peso: form.peso.value,
                altura: form.altura.value,
                gordura: form.gordura.value,
                imc: calculaImc(form.altura.value, form.peso.value)
            }

            return paciente;
        }

        // Cria a <tr> com as classes também.
        function montaTr(paciente) {

            var pacienteTr = document.createElement("tr");

            //Criando classes aos elementos.
            pacienteTr.classList.add("paciente");

            // Adicionar <td> nas <tr>, criando como filho do <tr> e monta uma <td> com as classes.
            pacienteTr.appendChild(montaTd(paciente.nome, "info-nome"));
            pacienteTr.appendChild(montaTd(paciente.peso, "info-peso"));
            pacienteTr.appendChild(montaTd(paciente.altura, "info-altura"));
            pacienteTr.appendChild(montaTd(paciente.gordura, "info-gordura"));
            pacienteTr.appendChild(montaTd(paciente.imc, "info-imc"));

            return pacienteTr;
        }

        // Cria uma <td> juntamente com as classes.
        function montaTd(dado, classe) {

            var td = document.createElement("td");
            td.textContent = dado;
            td.classList.add(classe);

            return td;
        }
    </script>
</body>

</html>