Fiz o seguinte código para este exercício:
function montaPaciente(trPaciente){
var tdNome = trPaciente.getElementsByClassName("info-nome")[0];
var tdPeso = trPaciente.getElementsByClassName("info-peso")[0];
var tdAltura = trPaciente.getElementsByClassName("info-altura")[0];
var paciente = {
"nome" : tdNome.textContent,
"peso" : tdPeso.textContent,
"altura" : tdAltura.textContent,
"pegaImc" : function calculaImc() {
if (this.altura != 0) {
var imc = this.peso / (this.altura * this.altura);
return imc;
}
else{
console.log("A altura deve ser diferente de zero");
}
}
};
return paciente;
}
function calculaTodosImcs(){
var trPacientes = document.getElementsByClassName("paciente");
percorreArray(trPacientes, function (trPaciente){
var paciente = montaPaciente(trPaciente);
var tdImc = trPaciente.getElementsByClassName("info-imc")[0];
var imc = paciente.pegaImc();
tdImc.textContent = imc;
console.log(imc);
// para ver algo no console
console.log(paciente.nome);
console.log(paciente.peso);
console.log(paciente.altura);
}
);
}
var botao = document.getElementById("calcula-imcs");
botao.onclick = calculaTodosImcs;
Gostaria de saber porque a linha botao.onclick = calculaTodosImcs; faz com que o cálculo de IMCs seja disparado apenas quando se pressiona o botão Calcular Imcs enquanto que se eu trocá-la para botao.onclick = calculaTodosImcs(); a página ao ser carregada já calcula os IMCs.
Resumindo, qual a diferença entre chamar a função com (botao.onclick = calculaTodosImcs();) e sem (botao.onclick = calculaTodosImcs;) parenteses?
Obrigado