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

Comportamento estranho ao clicar no campo do formulário.

Na aula de Introdução ao JavaScript: Programando na Linguagem da Web. 06 Adicionando pacientes na tabela. O meu formulário está com um comportamento estranho e não estou conseguindo resolver. Ao clicar em qualquer campo vazio do formulário, adiciona automaticamente todos os campos na tabela. É como se tivesse apertado o botão "enviar", porém apenas clico em qualquer campo do formulário vazio ele cria uma linha na tabela sem dados preenchidos. Ao preencher todos as dados e clicar no botão "enviar" ai sim, o comportamento esperado. Por favor, segue o código do JavaScript para saber o que está acontecendo.

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

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

    var nome = form.nome.value;
    var peso = form.peso.value;
    var altura = form.altura.value;
    var gordura = form.gordura.value;

    var pacienteTr = document.createElement("tr");

    var nomeTd = document.createElement("td");
    var pesoTd = document.createElement("td");
    var alturaTd = document.createElement("td");
    var gorduraTd = document.createElement("td");
    var imcTd = document.createElement("td");

    nomeTd.textContent = nome;
    alturaTd.textContent = peso;
    pesoTd.textContent = altura;
    gorduraTd.textContent = gordura;

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

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

    tabela.appendChild(pacienteTr);

});
4 respostas

Boa noite, Leonardo! Como vai?

Vc poderia compartilhar o projeto completo e mandar o link aqui para que eu dê uma olhada e tente te ajudar?

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Publiquei no meu domínio os arquivos de aula. Ainda não sei usar o Git nem o GitHub.

Aqui está o comportamento estranho do projeto.

https://leonardovaldetaro.com.br/alura/javascript/

Reparei que, basta dar um clique do mouse em qualquer lugar na tela que ele cria uma linha em branco na tabela.

Se eu usar o Tab do teclado, funciona sem problemas.

Aqui é o arquivo JavaScript.

https://leonardovaldetaro.com.br/alura/javascript/js/principal.js

Olá instrutor Gabriel. Fique investigando e buscando referências no MDN, sobre o evento addEventListner declarado no botão (botaoAdicionar).

Percebi que eu estava usando o sinal de igual na declaração. E por causa disso, apresentava o comportamento estranho que observei no meu exercício.

Segue código abaixo:

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

Mas o correto é que eu deveria usar o sinal ponto em vez do igual.

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

Poderia me explicar o porque da diferença entre os dois sinais?

solução!

Opa, Leonardo!

O sinal de igual é usado para atribuição. Tal qual é feito na primeira linha do código quando vc seleciona um elemento através do querySelector() e o armazena na variável botaoAdicionar.

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

Só que não é isso que vc quer fazer nesse caso do addEventListener(). Essa função pertence ao próprio elemento ( o botão ) que está armazenado na variável botaoAdicionar. Sendo assim, para acessar uma função do botão é preciso utilizar o . ( ponto final ).

botaoAdicionar.addEventListener("click", function(event) {
     // Código omitido.
});

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!