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

pacienteTr

No início da explicação o pacienteTr recebia o trsPaciente, porém quando começamos a usar funções anônima, a declaração de pacienteTr foi apagada e o código continuou funcionando. Como isso pode estar acontecendo?! :o

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.log("Altura não pode ser menor ou igual a 0!"); } } };

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

});

1 resposta
solução!

Isso ocorre por causa da função percorreArray()

function percorreArray(trsPacientes, comportamento) {

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

        var pacienteTrAtual = trsPacientes[posicaoAtual];
        comportamento(pacienteTrAtual);
    }
}

Veja que ela recebe dois parâmetros, o primeiro é o array com todas as linhas (TRs), o segundo é uma função. (váriavel comportamento)

Perceba que esta função anônima recebe um parâmetro.

Quando o percorreArray é executado, para cada linha, ele vai gerar uma variável para guardar o TR, e vai passar essa variável para a função anônima que foi infornada.

Nessa função anônima, ele pega esse "pacienteTr " enviado pela percorreArray, e faz o cálculo do IMC.

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