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

Minha Solução

calcula-imc.js:

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

pacienteImc(pacientes);

function pacienteImc(listaPacientes) {
    for (let i = 0; i < listaPacientes.length; i++){
        const paciente = listaPacientes[i];
        const pacienteImc = paciente.querySelector(".info-imc"); 

        const pacientePeso = paciente.querySelector(".info-peso").textContent;
        if (pacientePeso <= 0 || pacientePeso >= 1000) {
            validaImc(paciente, pacienteImc, "Peso Inválido!", "paciente-invalido");
            continue
        }

        const pacienteAltura = paciente.querySelector(".info-altura").textContent;
        if (pacienteAltura <= 0 || pacienteAltura >= 3) {
            validaImc(paciente, pacienteImc, "Altura Inválida!", "paciente-invalido");
            continue
        }

        pacienteImc.textContent = calculaImc(pacientePeso, pacienteAltura);
    }    
}

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

function validaImc(paciente, pacienteImc, mensagem, newClass){
    pacienteImc.textContent = mensagem;
    paciente.classList.add(newClass);
}

form.js:


const buttonEnviar = document.querySelector("#adicionar-paciente");

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

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

    createPaciente(form);
    form.reset();
});

function createPaciente(form) {
    const novoPaciente = createHtml();

    function createHtml() {
        const paciente = obtemPacienteInfo(form);

        pacienteTr = createHtmlElements("tr", "paciente");
        addElementsToTr(paciente, pacienteTr);
        pacienteImc(paciente, pacienteTr);

        return pacienteTr;
    }

    appendHtml(novoPaciente);
}

function obtemPacienteInfo(form) {
    return {
        nome: form.nome,
        peso: form.peso,
        altura: form.altura,
        gordura: form.gordura
    }
}


function createHtmlElements(tag, classe="") {
    const htmlTag = document.createElement(tag);
    htmlTag.classList.add(classe);
    return htmlTag;
}

function addElementsToTr(paciente, tr) {
    for (const [key, value] of Object.entries(paciente)) {
        const Td = createHtmlElements("td", "info-" + key);
        Td.textContent = value.value;
        tr.appendChild(Td);
    }
}

function pacienteImc(paciente, tr) {
    const td = createHtmlElements("td", "info-imc");
    td.textContent = calculaImc(paciente["peso"].value, paciente["altura"].value);
    tr.appendChild(td);
}


function appendHtml(html) {
    const tabela = document.querySelector("#tabela-pacientes");
    tabela.appendChild(html);
}
1 resposta
solução!

Oi Estudante, tudo bem?

Muito obrigada por compartilhar com a gente o seu código! Gostei muito da sua solução, parabéns por ter aceito o desafio e por concluir :D

Continue os bons estudos.

Abraço.