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

Dúvida no Ex. 4 da Aula 4 - Coleções e loops

Meu código executa corretamente, mostrando os resultados. Mas no console aparece um erro ao pegar a getElementsByClassName. Segue abaixo código e erro:

Código:

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

 for(var posicao = 0; trPaciente.length - 1; posicao++){

     var paciente = trPaciente[posicao];

     var tdNome =  paciente.getElementsByClassName("info-nome")[0];
     var altura = paciente.getElementsByClassName("info-altura")[0];
     var peso = paciente.getElementsByClassName("info-peso")[0];
     var tdImc  = paciente.getElementsByClassName("info-imc")[0];

     var pacientes = { nome : tdNome.textContent, altura : altura.textContent, peso : peso.textContent, imc : tdImc.textContent};

     if(pacientes.altura != 0){
         var imc = pacientes.peso / (pacientes.altura * pacientes.altura);
         tdImc.textContent = imc;
         console.log(imc);
     }
 }

Erro:

 Uncaught TypeError: Cannot read property 'getElementsByClassName' of undefined (referente a linha "var tdNome =  paciente.getElementsByClassName("info-nome")[0];")
4 respostas
solução!

Oi Ana,

o problema está no for, a condicao nao está definida corretamente. Deve ser:

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

Repare o posicaoAtual <= trPacientes.length - 1

ok?

Abs, Nico

mas pelo que pude ver só esta com o nome diferente, mas não vejo porque isso causaria erro

Só ajustando os nomes das variaveis para bater com seu codigo, veja a diferenca.

for(var posicao = 0; posicao <= trPaciente.length - 1; posicao++) { Meu // `for`:
for(var posicao = 0; trPaciente.length - 1; posicao++){ //seu for

ok?

entendi, falta uma parte da condição Obrigada

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