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

Dúvida no exercício do curso: JavaScript, a linguagem , capítulo: 5, exercício: 4

Boa noite galera,

Alguém poderia me ajudar sobre esse exercício, como eu devo adicionar a chamada montaPaciente no calcula-imc.js e se o mesmo está correto?

Desde já obrigado pela ajuda!

Seguem meus códigos atuais:

monta-paciente.js

function montaPaciente(pacienteTr){

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

    return 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("Não posso dividir por zero!");

                                }
                         }};

}

calcula-imc.js

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

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("Não posso dividir por zero!");

                            }
                         }};

    var imc = pacienteAtual.pegaImc();

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

    console.log(imc);

});
7 respostas

Instrutores, obrigado pela ajuda! Excelente trabalho!!!

Boa tarde, Raphael.

Conseguiu resolver sua dúvida?

[]'s Marco Bruno.

solução!

Oi Raphael,

Desculpa pela demora. Sua pergunta passou batido pelo meu radar, hehe.

Se eu entendi bem seu código, vamos lá. Você criou a função montaPaciente, certo? E veja o que ela faz: ela recebe um "tr", pega os dados e devolve um paciente montado.

Agora é hora de usar no seu .js. Veja que nele, vc declara a variável pacienteAtual. Na sequência, você cria um paciente, usando o mesmo código que você isolou na função montaPaciente.

Então, basta trocar, e usar a nova função, passando o "tr" da linha:

var pacienteAtual = montaPaciente(pacienteTr);

O resto do código segue. Perceba agora que você tem uma função (percorreArray), chamando outra função (a montaPaciente).

Quais as vantagens disso? Puxa, agora sempre que precisar montar um paciente, pode apenas invocar a nova função, ao invés de ficar fazendo aquele código gigante o tempo todo!

Entendeu? Funcionou?

Um abraço!

Oi Maurício, entendi. Funcionou sim. Está um pouco confuso porque nesse curso, o código montado no vídeo é um e o código montado na explicação em texto é outro. Então no momento que eu travei, eu não tinha onde bater para conferir se estava fazendo certo.

OI Raphael,

Quando é assim, vc pode clicar no link "Estou com dúvida", que aí verá a sugestão do instrutor!

Um abraço!

Maurício, eu estava com esta dúvida tbm, e fiz o q vc indicou e funcionou.

mas continuo com outra dúvida se o meu calcula-imc.js fica assim:

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

percorreArray(trsPacientes, function (pacienteTr){

var pacienteAtual = listaPacientes(pacienteTr);

var imc = pacienteAtual.pegaImc();

console.log(imc);

});

cara, já consegui!... heheh ;)