Boa noite , pessoal Eu estava brincando aqui com o exercicio, testanndo formatos diferentes e cheguei neste codigo:
function montaPaciente(pacienteX){
var nomeTd =pacienteX.getElementsByClassName("info-nome")[0];
var pesoTd = pacienteX.getElementsByClassName("info-peso")[0];
var alturaTd = pacienteX.getElementsByClassName("info-altura")[0];
var imcTd = pacienteX.getElementsByClassName("info-imc")[0];
var paciente= {
nome: nomeTd.textContent,
peso: pesoTd.textContent,
altura: alturaTd.textContent,
pegaImc: function(){
if (this.altura != 0) {
var imc = this.peso / (this.altura * this.altura);
}
return imc;
}
}
var imcDoPacienteAtual = paciente.pegaImc;
imcTd.textContent = imcDoPacienteAtual;
console.log (paciente.nome);
}
var trPacientes= document.getElementsByClassName("paciente");
function percorreImc(trPacientes, comportamento){
for (var posicaoAtual=0; posicaoAtual <= trPacientes.length -1; posicaoAtual++){
var pacienteAtual= trPacientes[posicaoAtual];
comportamento(pacienteAtual);
}
}
percorreImc(trPacientes, montaPaciente);
O codigo roda normalmente. No console, onde eu peço os nomes dos pacientes, tudo certo. O código retorna Leonardo e Paulo.
O problema é quando eu solicito o imc. Se ao invés de console.log (paciente.nome); eu solicitar console.log (paciente.pegaImc); o código retorna a função e não o resultado da função, como se não reconhecesse o function como uma função, mas sim como texto. O resultado fica...
function(){
if (this.altura != 0) {
var imc = this.peso / (this.altura * this.altura);
}
return imc;
}
function(){
if (this.altura != 0) {
var imc = this.peso / (this.altura * this.altura);
}
return imc;
}
Alguem sabe dizer porque isso está acontecendo?