2
respostas

Utilizando um Loop para construir os pacientes

Na parte do código.

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

se eu quiser colocar "posicaoAtual" no lugar de 0 no [] aparece o seguinte erro.

calcula-imc.js:10 Uncaught TypeError: Cannot read property 'textContent' of undefined(…)

no console. Mas utilizando eu não estaria mudando o valor durante o loop. Não faria o código mais dinâmico.

2 respostas

Oi Allonso, provavelmente o código que define a posição atual está com algum problema.. a posição atual deve estar com um valor incorreto...

O erro acontece pelo seguinte, se você fizer o seguinte teste:

console.log(pacienteTr.getElementsByClassName("info-nome"));

Vai ter como resultado algo assim:

HTMLCollection[1]0: td.info-nome
length: 1
__proto__: HTMLCollection

Todos o conteúdo do elemento que tem a classe "info-nome" são retornados dentro de um array, esse array tem apenas 1 posição, por isso qualquer número diferente de zero vai dar erro.

Para iterar as linhas teria que fazer algo seguindo esta linha:

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

        var pacienteTr =     trsPacientes[posicaoAtual];
var tdNome = pacienteTr.getElementsByClassName("info-nome")[0];

//Restante de sua programação

    }