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

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

Olá a todos, Minha dúvida é com a relação entre montaPaciente.js e o calcula-imc.js já que na própria função montaPaciente(trAtual) é feito o cálculo do imc, tornando a ação do código calcula-imc.js repetitivo.

Segue abaixo o código: - montaPaciente.js

function montaPaciente(trAtual){

    var nomeTd = trAtual.getElementsByClassName("info-nome")[0];
    var pesoTd = trAtual.getElementsByClassName("info-peso")[0];
    var alturaTd = trAtual.getElementsByClassName("info-altura")[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;

            } else {
                console.log("Altura não pode ser igual a zero");
            }        
        }
    }
    return paciente;
}

var pacientes = document.getElementsByClassName("paciente");

for(var posicaoAtual = 0; posicaoAtual < pacientes.length; posicaoAtual++){

    var trAtual = pacientes[posicaoAtual];

    var imcTd = trAtual.getElementsByClassName("info-imc")[0];
    var pacienteAtual = montaPaciente(trAtual);

    var imcDoPaciente = pacienteAtual.pegaIMC();
    imcTd.textContent = imcDoPaciente;

    console.log("Cálculo IMC do paciente = " + imcDoPaciente);
}
  • calcula-imc.js
//IMC = peso /altura * altura
var pacientes = document.getElementsByClassName("paciente");

percorreArray(pacientes, function(trAtual){

    var pacienteAtual = montaPaciente(trAtual);

    var imcDoPaciente = pacienteAtual.pegaIMC();
    imcTd.textContent = imcDoPaciente;

})
3 respostas
solução!

Olá Elayne, a ideia aqui era você usar o calcula-imc.js dentro do montaPaciente(trAtual) assim você não precisa repetir o código

Olá Philippe, acabei usando essa mesma ideia só que de forma contrária. O código tá funcionando, mas não sei se poderia considerar correto, segue abaixo o código para análise: =D

calcula-imc.js

var botao = document.getElementById("calcula-imcs");
botao.addEventListener("click", function(){

    //IMC = peso /altura * altura
    var pacientes = document.getElementsByClassName("paciente");

    percorreArray(pacientes, function(trAtual){

        var pacienteAtual = montaPaciente(trAtual);
        var imcDoPaciente = pacienteAtual.pegaIMC();

        var imcTd = trAtual.getElementsByClassName("info-imc")[0];
        imcTd.textContent = imcDoPaciente;
        console.log("Cálculo IMC do paciente = " + imcDoPaciente);

    });
});

montaPaciente.js

function montaPaciente(trAtual){

    var nomeTd = trAtual.getElementsByClassName("info-nome")[0];
    var pesoTd = trAtual.getElementsByClassName("info-peso")[0];
    var alturaTd = trAtual.getElementsByClassName("info-altura")[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;

            } else {
                console.log("Altura não pode ser igual a zero");
            }        
        }
    }
    return paciente;
}

Oi Elayne! Está correto sim!