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

Dúvida no Ex. 1 da Aula 6 - Eventos

Ja chequei ate aqui Aula 6, porem nao esta exibindo os valores do IMCs na pagina index, e nao apresenta erro nenhum no console alguem ja passou por isso, vou revisar pela 3 vez o codigo...rs osso..

8 respostas

William,

Por gentileza poste seu código para que possa verificar.

att.

calcula-imc.js

function calculaTodosImcs(){
    var trsPacientes = document.getElementsByClassName("Paciente");

    percorreArray(trsPacientes, function (pacienteTr){

        var tdNome = pacienteTr.getElementsByClassName("info-nome")[0]; // pega tr do nome do paciente atual
        var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0]; // pega tr do peso do paciente atual
        var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0]; // pega tr do altura do paciente atual

        var pacienteAtual = {nome : tdNome.textContent, 
                             peso : tdPeso.textContent, 
                             altura : TdAltura.textContent,
                             pegaImc : function(){  //FUNCAO ANONIMA QUE REALIZA O CALCULO IMC
                                if(this.altura != 0){

                                    var imc = this.peso / (this.altura * this.altura);
                                    return imc;

                                }else{
                                    console.log("Não posso executar uma divisão por 0!");
                                }   
                             }};  //funcao anonima

        var imc = pacienteAtual.pegaImc();

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

        console.log(imc); // 25
        console.log("testeteste")
    })    
}

var botao = document.getElementById("calcula-imcs");
//botao.onclick = calculaTodosImcs;
botao.addEventListener("click", calculaTodosImcs);

percorre.js

function percorreArray(trsPacientes, comportamento) {

    for(var posicaoAtual = 0; posicaoAtual <= trsPacientes.length - 1; posicaAtual++){
        var pacienteTrAtual = trsPacientes[posicaoAtual];
        comportamento(pacienteTrAtual);
    }
}

imprime-nome.js

var trsPacientes = document.getElementsByClassName("Paciente");

percorreArray(trsPacientes, function (pacienteTr){

    var tdNome = pacienteTr.getElementsByClassName("info-nome")[0]; // pega tr do nome do paciente atual
    var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0]; // pega tr do peso do paciente atual
    var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0]; // pega tr do altura do paciente atual

    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 executar uma divisão por 0!");
                            }   
                        }};  //funcao anonima

        console.log(pacienteAtual.nome); // 25
});

adiciona.js

var botao = document.querySelector("#adicionar-paciente");

botao.addEventListener("click", function(event){

    event.preventDefault(); //impede comportamento padrao do form

    var campoNome = document.querySelector("#campo-nome");
    var campoPeso = document.querySelector("#campo-peso");
    var campoAltura = document.querySelector("#campo-Altura");

    var pacienteNovo = "<tr class='paciente'>"+
                        "<td class='info-nome'>"+ campoNome.value +"</td>"+
                        "<td class='info-peso'>"+ campoPeso.value +"</td>"+
                        "<td class='info-altura'>"+ campoAltura.value +"</td>"+
                        "<td class='info-imc'></td>"+
                    "</tr>";

var tabela = document.querySelector("table"); //primeiro elemento
tabela.innerHTML = tabela.innerHTML + pacienteNovo;

campoNome.value = "";
campoPeso.value = "";
campoAltura.value = "";

})
solução!

Olá William! Observando seu código percebi que você cometeu alguns pequenos erros de digitação e foi isso que estava fazendo seu código não funcionar.

1 - O nome da tag é "paciente" e não "Paciente".

Altere a seguinte linha de código presente tanto em calcula-imc.js como em imprime-nome.js:

var trsPacientes = document.getElementsByClassName("Paciente");

Para:

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

2 - Também tanto em calcula-imc.js quanto em imprime-nome.js você escreveu TdAltura ao invés do nome correto da variável que é tdAltura .

Altere a seguinte linha de código:

altura : TdAltura.textContent,

Para:

altura : tdAltura.textContent,

3 - Em seu percorre.js você escreveu posicaAtual++ quando o correto seria posicaoAtual++.

Altere seu código abaixo:

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

Para:

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

Enfim, após ter feito essa alterações seu código rodou normalmente aqui. Espero ter ajudado! Bons Estudos!

Cara perfeito, eu na verdade fiz isso so pra te testar...kkkk brincadeira! valew pelo help.

kkkkkkk Pelo menos eu passei no teste. kkkkkkk. Por nada William! Bons Estudos!