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

Repetindo o comando 5x, navegador ou código?

Meu código é o mesmo que o do curso de JavaScript: Programando na linguagem da web, aula 4.

Meus navegadores estão repetindo 5x a mesma coisa, ao ser dado um comando, seja ele console.log, alert, ou criar uma tabela, indiferente. Toda vez ele me retorna 5 vezes a mesma coisa, o que eu posso fazer?

Será um vírus no navegador, ou algum problema no código? Obs: Baixei o código da aula 04 e coloquei no JS alert(titulo) ou console.log(titulo), ele me retorna 5x igual. Não achei nada falando sobre na internet.

4 respostas

Boa noite, Gabriel! Como vai?

Cola aqui o código que está dando problema! Aí eu darei uma olhada e te ajudo!

Boa noite Gabriel, tudo tranquilo, e você?

Então eu fui enviar o código, porém fui testar novamente pra ver se o erro estava acontecendo em todos, e sim, acontece mesmo o erro, porém percebi que na hora que o professor foi digitar o código, essa pecinha } estava por baixo, mas ele mudou, e eu não vi, com isso eu não percebi que não estava fechando la encima, vou te mandar como estava o código.

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

var pacientes = document.querySelectorAll(".paciente");

for(var i = 0; i < pacientes.length ; i++){

    var paciente = pacientes[i];

    var tdPeso = paciente.querySelector (".info-peso");
    var peso = tdPeso.textContent;

    var tdAltura = paciente.querySelector (".info-altura");
    var altura = tdAltura.textContent;

    var tdImc = paciente.querySelector (".info-imc");

    var pesoEhValido = true;
    var alturaEhValida = true;

    if(peso < 0 || peso >500){
        console.log("Peso invalido");
        pesoEhValido = false;
        tdImc.textContent = "Peso inválido!";
        paciente.classList.add("paciente-invalido");
    }

    if(altura < 0 || altura >3.00){
        console.log("Altura invalida");
        alturaEhValida = false;
        tdImc.textContent = "Altura inválida!";
        paciente.classList.add("paciente-invalido");
    }

    if(alturaEhValida && pesoEhValido){
        var imc = peso / (altura * altura);
        tdImc.textContent = imc.toFixed(0);
    }

    var botaoAdicionar = document.querySelector("#adicionar-paciente")
    botaoAdicionar.addEventListener("click", function () {
    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;    
    pesoTd.textContent = peso;    
    alturaTd.textContent = altura;    
    gorduraTd.textContent = gordura;    
    imcTd.textContent = imc;    

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

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

    });
}

A ultima estava errado o tempo todo, e mesmo eu baixando o projeto inteiro novamente, eu seguia deixando ela por baixo. Um segundo perdido me travou.

Muito obrigado mesmo assim, consegui achar o erro, desculpa o incômodo.

solução!

A forma correta seria essa, e não a anterior

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

var pacientes = document.querySelectorAll(".paciente");

for(var i = 0; i < pacientes.length ; i++){

    var paciente = pacientes[i];

    var tdPeso = paciente.querySelector (".info-peso");
    var peso = tdPeso.textContent;

    var tdAltura = paciente.querySelector (".info-altura");
    var altura = tdAltura.textContent;

    var tdImc = paciente.querySelector (".info-imc");

    var pesoEhValido = true;
    var alturaEhValida = true;

    if(peso < 0 || peso >500){
        console.log("Peso invalido");
        pesoEhValido = false;
        tdImc.textContent = "Peso inválido!";
        paciente.classList.add("paciente-invalido");
    }

    if(altura < 0 || altura >3.00){
        console.log("Altura invalida");
        alturaEhValida = false;
        tdImc.textContent = "Altura inválida!";
        paciente.classList.add("paciente-invalido");
    }

    if(alturaEhValida && pesoEhValido){
        var imc = peso / (altura * altura);
        tdImc.textContent = imc.toFixed(0);
    }
}

    var botaoAdicionar = document.querySelector("#adicionar-paciente")
    botaoAdicionar.addEventListener("click", function () {
    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;    
    pesoTd.textContent = peso;    
    alturaTd.textContent = altura;    
    gorduraTd.textContent = gordura;    
    imcTd.textContent = imc;    

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

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

    });

Porém já aprendi, um pouco mais.

Nunca é uma derrota, é sempre um aprendizado.

Grande abraço Gabriel, obrigado mais uma vez.

Entendi. Não foi incomodo nenhum! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos!