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

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

Meu código é:

function montaPaciente (pacienteTr){
    //var pacienteTr = trsPacientes[posicaoAtual];

    var tdNome = pacienteTr.getElementsByClassName("info-nome")[0];
    var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0];
    var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0];


    var paciente = {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.log("Nao Posso Dividir por Zero");
                        }
                    }
    }
    return paciente;
}

var trsPacientes = document.getElementsByClassName("paciente"); // Array de trs


for (var posicaoAtual = 0; posicaoAtual <= trsPacientes.length - 1; posicaoAtual++) {

    var pacienteTr = paciente[posicaoAtual];

    var paciente = montaPaciente[pacienteTr];

    var imc = paciente.pegaImc();

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

    console.log(imc);

};

Mas no console aparece a seguinte mensagem de erro :

"Uncaught TypeError: Cannot read property '0' of undefined calcula-imc.js:29"

Aonde estou errando?

2 respostas
solução!

Na linha 29, você está tentando pegar array de paciente, que não existe nesta função.

Para corrigir, o array que deve ser pego é trPacientes[posicao]

No linha 31, para chamar a função, deve ser com parenteses e não com colchetes.

    var pacienteTr = trsPacientes[posicaoAtual];

    var paciente = montaPaciente(pacienteTr);

Ricardo, muito obrigado!