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

Dúvida no Ex. 5 da Aula 5 - Funções e os cidadãos de primeira classe

//calcula-imc.js
var pacientes = document.getElementsByClassName("paciente");
for (var i = pacientes.length - 1; i >= 0; i--) {

    var pacienteTr = pacientes[i];

    var paciente = {
                    peso : pacienteTr.getElementsByClassName("info-peso")[0].textContent,
                    altura : pacienteTr.getElementsByClassName("info-altura")[0].textContent,
                    pegaImc : function(){
                                if(this.altura != 0){
                                    return this.peso / (this.altura * this.altura);
                                } else{
                                    console.log("Não posso executar uma divisão por 0!");
                                }
                            }
                   };

    var imc = paciente.pegaImc;
    pacienteTr.getElementsByClassName("info-imc")[0].textContent = imc;
}

Na coluna IMC da minha página index.html, ao invés de aparecer o valor que a função deveria retornar aparece:

"function(){ if(this.altura != 0){ return this.peso / (this.altura * this.altura); } else{ console.log("Não posso executar uma divisão por 0!"); } }"

Fiz o teste no Mozilla Firefox 45.0.1 e no Internet Explorer 11.

2 respostas

Phelipe ,

seu código está correto , porém unica coisa que vejo diferente é seu for .

tenta modificar para esse abaixo :

for(var i = 0; i <= trsPacientes.length - 1; i++){
solução!

Phelipe para você resolver o problema basta apenas adicionas "()" na chamada da função.

Seu código:

var imc = paciente.pegaImc;

Mude para:

var imc = paciente.pegaImc();

Espero ter ajudado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software