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

Valor do IMC não aparece na tabela

Olá, pessoal! Estou no capítulo 5, na parte cujo título é "Código Repetido", e os arquivos .js estão da seguinte forma:

// percorre.js

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

//imprime-nome.js

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

percorreArray(trsPacientes, imprimeNome);

function imprimeNome(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!");                        
            }                        
        }                        
    };                            

console.log(pacienteAtual.nome);
}

//calcula-imc.js

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

percorreArray(trsPacientes, imprimeEModificaTdDeImc);

function imprimeEModificaTdDeImc(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 ("não é possível realizar divisão por 0");
        }
    }
};

        var imc = pacienteAtual.pegaImc();

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

Antes ddessas alterações, quando ainda não havia o percorre.js, a tabela era atualizada com o valor do imc; no entanto, agora esse valor não mais aparece. Já li e reli os códigos várias vezes, corrigi alguns probleminhas referentes a erros de nomes de algumas variáveis, e nada. O que pode estar errado? Obs.: coloquei as chamadas aos scripts no index.html:

//index.html

<script src="percorre.js"</script>

<script src="calcula-imc.js"></script>

<script src="imprime-nome.js"> </script>
2 respostas

Olá José,

Feche a tag script que importa o percorre.js no index.html e faça um novo teste.

Att,

solução!

Puxa vida! Que falta de atenção a minha! RSRS Erro crasso, e olha que procurei inúmeras vezes pelo erro, e me passou despercebido! Muito obrigado, amigão! Um abraço!

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