Olá amigo, coloque todo o seu código do arquivo calcula-imc.js pra eu conseguir analisar, precisava ver como está feita a função calculaTodosImcs().
Veja como está a minha:
function calculaTodosImcs() {
var trsPacientes = document.getElementsByClassName("paciente");
percorreArray(trsPacientes, function(pacienteTr){
var tdNome = pacienteTr.getElementsByClassName("info-nome")[0];
var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0];
var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0];
var pacienteAtual = {nome : tdNome.textContent,
peso : tdPeso.textContent,
altura : tdAltura.textContent,
pegaImc : function(){
if (this.altura != 0){
var imc = this.peso / (this.altura * this.altura);
return imc;
} else {
console("Não posso executar uma divisão por 0!");
}
}
};
var imc = pacienteAtual.pegaImc();
var tdImc = pacienteTr.getElementsByClassName("info-imc")[0];
tdImc.textContent = imc;
console.log(imc);
});
var botao = document.getElementById("calcula-imcs");
botao.addEventListener("click", calculaTodosImcs);
E assim também funciona, colocando a função como função de primeira classe:
var botao = document.getElementById("calcula-imcs");
botao.addEventListener("click", function() {
var trsPacientes = document.getElementsByClassName("paciente");
percorreArray(trsPacientes, function(pacienteTr){
var tdNome = pacienteTr.getElementsByClassName("info-nome")[0];
var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0];
var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0];
var pacienteAtual = {nome : tdNome.textContent,
peso : tdPeso.textContent,
altura : tdAltura.textContent,
pegaImc : function(){
if (this.altura != 0){
var imc = this.peso / (this.altura * this.altura);
return imc;
} else {
console("Não posso executar uma divisão por 0!");
}
}
};
var imc = pacienteAtual.pegaImc();
var tdImc = pacienteTr.getElementsByClassName("info-imc")[0];
tdImc.textContent = imc;
console.log(imc);
});
});
Os dois funcionam!!
Espero ter ajudado.