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

Falha ao executar 'appendChild'

Boa noite, estou com seguinte erro quando tento cadastro um novo paciente

Erro: form.js:12 Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'. at HTMLButtonElement. já busquei na internet, mais não entendi muito bem o que ta acontecendo. alguém consegui me ajudar!

Segue bloco de código do meu form.js

var botaoCadastrar = document.querySelector("#cadastro-paciente");

botaoCadastrar.addEventListener("click",function(event){
    event.preventDefault();
    // declarando as variáveis form para indicar a inclusão de novos pacientes a tabela
    var form = document.querySelector("#form-adiciona");
    var paciente = pacienteCadFormulario (form);
    var pacienteTr = criarTr(paciente);
    var tabela = document.querySelector("#tabela-pacientes");

    tabela.appendChild(pacienteTr);
    form.reset();

});
    function criarTr (paciente){
    //criar tr
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");

    //criando as td's e já adicionando dentro da tr
    pacienteTr.appendChild(criarTd(paciente.nome,"info-nome"));
    pacienteTr.appendChild(criarTd(paciente.peso,"info-peso"));
    pacienteTr.appendChild(criarTd(paciente.altura,"info-altura"));
    pacienteTr.appendChild(criarTd(paciente.gordura,"info-gordura"));
    pacienteTr.appendChild(criarTd(paciente.imc,"info-imc"));
}
2 respostas
solução!

Boa noite Igor. De acordo com essa mensagem de erro, você está tentando passar algo diferente de um elemento html como argumento no método 'appendChild'.

tabela.appendChild(pacienteTr);

Olhando esse trecho de código, vi que você chamou um método para criar esse elemento html e atribuir a variável pacienteTr, aqui:

var pacienteTr = criarTr(paciente);

Porém, olhando para o método criarTr, ele não tem nenhum retorno definido, ou seja, apesar desse método criar de fato um elemento html, ele não está retornando esse elemento. Por tanto, quando você tenta fazer o trecho de código acima, nenhum elemento está sendo retornado e atribuído a variável pacienteTr.

Dessa forma, quando você tenta fazer tabela.appendChild(pacienteTr);, está passando algo diferente do elemento html esperado.

Bom dia Candido, realmente eu não me atentei nesse detalhes, mais já corrigi meu erro e agora o código está funcionando perfeitamente, obrigado amigo!