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

Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'. at montaTr (form.js:43)

Ele está dando o seguinte erro:

form.js:43 Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'. at montaTr (form.js:43) at HTMLButtonElement. (form.js:11) montaTr @ form.js:43 (anonymous) @ form.js:11

Aparentemente meu código está igual ao da aula :
var botaoAdicionar = document.querySelector("#adicionar-paciente");

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

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

    var paciente = obterPacientedoForm (form);
    console.log (paciente);

    var pacienteTr = montaTr (paciente);

    var tabela = document.querySelector ("#tabela-pacientes");

    tabela.appendChild (pacienteTr);


});

function obterPacientedoForm(form){

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

        return paciente ;
}

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

    var nomeTd = montaTd (paciente.nome , "info-nome");
    var pesoTd = montaTd (paciente.peso , "info-peso");
    var alturaTd = montaTd (paciente.altura , "info-altura");
    var gorduraTd = montaTd (paciente.gordura , "info-gordura");
    var imcTd = montaTd (paciente.imc, "info-imc");

    pacienteTr.appendChild (nomeTd);
    pacienteTr.appendChild (pesoTd);
    pacienteTr.appendChild (alturaTd);
    pacienteTr.appendChild (gorduraTd);
    pacienteTr.appendChild (imcTd);

    return pacienteTr;
}

function montaTd (dado,classe){
    var td = document.createElement ("td");
    td.textContent = dado;
    td.classList.add (classe);
}
1 resposta
solução!

Oi Lucas, tudo bem?

O que acontece é que na sua função montaTd() você não está retornando nada, porém está atribuindo essa função a uma variável como nomeTd, então na verdade está retornando undefined, o que não é o correto, é preciso retornar a linha. Dessa maneira, sua função precisa ser assim:

function montaTd (dado,classe){
    var td = document.createElement ("td");
    td.textContent = dado;
    td.classList.add (classe);
    return td; // retornando a informação criada
}

Agora sim funcionará da maneira correta.

Espero ter ajudado, bons estudos =)