Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 6 da Aula 5 - Funções e os cidadãos de primeira classe - Percorre array não executa

Galera, bom dia.

Tenho os arquivos percorre-array.js

function percorreArray(array, func) {
    for (var i = 0; i < array.length; i++) {
        func(array[i]);
    }
}

E o calcula-imc.js

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

percorreArray(Trs, mostraIMC);

function mostraIMC(tr) {
    var paciente = montaPaciente(tr);

    var imcTr = tr.getElementsByClassName("info-imc");
    imcTr.textContent = paciente.imc();
}

function montaPaciente(tr) {
    var nome = tr.getElementsByClassName("info-nome")[0];
    var altura = tr.getElementsByClassName("info-altura")[0];
    var peso = tr.getElementsByClassName("info-peso")[0];

    paciente = {
        nome: nome.textContent,
        altura: altura.textContent,
        peso: peso.textContent,
        imc: function () {

            if (this.altura != 0) {
                var imc = this.peso / (this.altura * this.altura);
                return imc;
            } else {
                contole("Não posso dividir por 0");
            }
        }
    }

    return paciente;
}

São chamados no index.html nessa ordem:

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

E o resultado simplesmente não aparece! No console não aponta erro algum. Debugando o código, no momento em que o navegador chama a função percorreArray, ele simplesmente pula para o final do código sem executar nada. O que está errado?

Obrigado!

1 resposta
solução!

Passei um dia inteiro procurando o problema e, logo após postar a dúvida, consegui resolver.

Faltou indicar a posição [0] após declarar o imcTr:

Errado:

    var imcTr = tr.getElementsByClassName("info-imc");

Correto:

    var imcTr = tr.getElementsByClassName("info-imc")[0];

Mas isso me trouxe outra dúvida. Demorei tanto para resolver esse ~simples~ problema por não conseguir debugar adequadamente o código, pois no Chrome a leitura da função percorreArray era simplesmente pulada.

Qual a melhor maneira de se debugar um código JavaScript?