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

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

Não é bem uma dúvida, gostaria de compartilhar minha resolução do exercício 5 e ver possíveis modificações/melhorias no código:


//funcao para criar um objeto paciente
var montaPaciente = function(nome, peso, altura){
    var paciente = {
        "nome": nome,
        "peso": peso,
        "altura": altura,
        getImc: function(){
                    if(this.peso!=0){            
                        var imc = this.peso/(this.altura*this.altura);    
                        return imc;
                    }else{
                        console.log("Ops, divisão por zero impossível!");    
                    }
        } 
    };
    return paciente;
};
//mostra IMC na view
var imc = function(){
    //cria um vetor de pacientes
    var pacientes = [];
    //busca quantidade de pacientes na view
    var qntPacientes = document.getElementsByClassName("paciente").length;
    //cria novo paciente com infos da view, acrescenta ao vetor e mostra IMC na view
    for(var cont=0; cont<qntPacientes; cont++){        
        //obtem nome, peso e altura da view
        var nome = document.getElementsByClassName("info-nome")[cont].textConten;
        var peso = document.getElementsByClassName("info-peso")[cont].textContent;
        var altura = document.getElementsByClassName("info-altura")[cont].textContent;    
        //cria um novo paciente com a funcao montaPaciente()
        var paciente = montaPaciente(nome, peso, altura);
        //adiciona paciente ao vetor
        pacientes[cont] = paciente;
        //lanca IMC na view
        document.getElementsByClassName("info-imc")[cont].textContent = paciente.getImc();
    }
};
3 respostas

a funcao imc() é chamada através do evento onClick no botão calcular IMC da página index.html

solução!

Seria melhor atribuir o "click" do botão via javascript, separando visualização de comportamento.

Feita a correção Cleverson. Muito obrigado!