Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

AppendChild

// Adiciona paciente a tabela

var addToList = document.querySelector("#adicionar-paciente")

 addToList.addEventListener('click', function(event){
    event.preventDefault();

        var addPacientToList = document.querySelector(".form");

        //extrai informações do form

        var paciente = searchForm(addPacientToList);

        //cria tr e td do paciente
        pacienteTr = montaTr(paciente);

        // adicionando paciente a tabela.
        var tabela = document.querySelector("#tabela-pacientes");

        tabela.appendChild(pacienteTr);
});

function searchForm(addPacientToList){

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

    return paciente;
}


function montaTr(paciente) {
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");

    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"));
}

function montaTd(dado, classe){
    var td = document.createElement("td");
    td.textContent = dado;
    td.classList.add(classe);
    return td;
}

Quando tento adicionar um novo paciente o seguinte erro aparece no console

form.js:20 Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.
    at HTMLButtonElement.<anonymous> (form.js:20)

Alguem poderia me ajudar?

2 respostas
solução!

Boa noite, André! Como vai?

Vc esqueceu de retornar a tr montada de dentro da função montaTr(). O correto seria fazer ao final dessa função return pacienteTr;

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software