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

Log sendo enviado mesmo antes do click

Olá, Estou com o seguinte problema: O código abaixo só chama a função para calcular o icm quando eu clico no botão, porém o segundo evento (console.log) acontece assim que a página é atualizada. Gostaria de saber o que estou errando.

function calculaTodosOsImcs(){
    console.log("Pegando os dados dos pacientes")
    var pacientesTr = document.getElementsByClassName("paciente");
    console.log("Dados coletados!");
    percorreArray(pacientesTr,function(pacienteTr){
            paciente = montaPaciente(pacienteTr);        
            imcHtml = pacienteTr.getElementsByClassName("info-imc")[0];
            imcHtml.textContent = paciente.calculaImc();
    });
}

var botao = document.getElementById("calcula-imcs");
botao.addEventListener("click",calculaTodosOsImcs);
botao.addEventListener("click",console.log("Calculando os Imcs"));
2 respostas
solução!

Gabriel,

Na função de callback você deve passar apenas a referencia da função, da mesma forma que você fez no primeiro. Exemplificando, se no primeiro addEventListener você tivesse feito dessa forma

botao.addEventListener("click",calculaTodosOsImcs());

O seu método calculaTodosOsImcs seria chamado logo no load da página. É isso que está acontecendo no seu log, o código está executando a função log passando um texto. Nesse caso crie uma outra função e dentro dela chame o seu log.

Abraço.

Vlw Silvio!