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

incluir duas linhas de uma vez

Fiz um teste pra ver se o botão colocava duas vezes a TR dentro da tabela, porém só adicionou uma vez, é normal esse comportamento ou escrevi algo errado?

var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(event) {
    event.preventDefault();

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

    var paciente = obtemPacienteDoFormulario(form);

    var pacienteTr = montaTr(paciente);

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

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

});
2 respostas

Sim, esse é o comportamento esperado.

O appendChild ddiciona um nó ao final da lista de filhos de um nó pai especificado. Se o nó já existir no documento, ele é removido de seu nó pai atual antes de ser adicionado ao novo pai.

Para saber mais: https://developer.mozilla.org/pt-BR/docs/Web/API/Node/appendChild

solução!

Fala aí Wesley, tudo bem? Bom, o problema está na sua variável, por já ter feito o .appendChild uma vez, se tentar fazer o mesmo append, o JavaScript irá entender que ela já foi inserido e não irá inserir novamente.

Provavelmente esse controle é feito por referência/endereço de memória, ele sabe que a variável alocada para o endereço B já foi inserida.

Para resolver o seu problema de forma simples e fácil, você pode fazer um clone da tr no segundo append:

var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(event) {
    event.preventDefault();

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

    var paciente = obtemPacienteDoFormulario(form);

    var pacienteTr = montaTr(paciente);

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

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

});

Espero ter ajudado.