Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

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

Não estou entendendo qual o problema do código abaixo:

function calculaImc(){
    //retorna um array com todos os trs que existem com a classe 'paciente'. 
    var trsPacientes = document.getElementsByClassName('paciente');

    for(int posicaoAtual = 0; posicaoAtual <= trsPacientes.length - 1; posicaoAtual++){
            var pacienteTr = trsPacientes[posicaoAtual]; 
            var tdNome = pacienteTr.getElementsByClassName('info-nome')[0]; //pega o elemento com a classe 'info-nome' contido na classe paciente
            var tdPeso = pacienteTr.getElementsByClassName('info-peso')[0];
            var tdAltura = pacienteTr.getElementsByClassName('info-altura')[0];
            var tdImc = pacienteTr.getElementsByClassName('info-imc')[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('Não é possível dividir por zero!');
                    }
                }};

            tdImc.textContent = paciente.pegaImc();
    }

}

Quando executo, ocorre o erro "calculaImc is not defined" e "Unexpected identifier". Pelo que já vi, o problema está no For, pois roda direito quando mudo para While. Não entendo o que está errado no For.

1 resposta
solução!

Já encontrei o problema! No For, eu estava declarando i como int.

Errado: for(int posicaoAtual = 0; posicaoAtual <= trsPacientes.length - 1; posicaoAtual++)

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