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

Erro durante a segunda excução

Esse código executa uma vez e exibe o primeiro imc, mas ao passar uma segunda vez dá erro na linha: nome: tdNome.textContent,

O erro é: Uncaught TypeError: Cannot read property 'textContent' of undefined.

Há 3 "pacientes" cadastrados. Alguém consegue identificar o que está acontecendo?


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

var i = 0;
while(pacientes[i]!=null){

var trpaciente = pacientes[i];

var tdNome = pacientes[i].getElementsByClassName("info-nome")[i];
var tdPeso = pacientes[i].getElementsByClassName("info-peso")[i];
var tdAltura = pacientes[i].getElementsByClassName("info-altura")[i];
var tdImc = pacientes[i].getElementsByClassName("info-imc")[i];


var paciente = {
        nome:tdNome.textContent,
        peso:tdPeso.textContent,
        altura:tdAltura.textContent,
        imc:tdImc.textContent
    };


if(paciente.altura!=0){
    paciente.imc = parseFloat((paciente.peso / (paciente.altura*paciente.altura)).toFixed(2));


    tdImc.textContent = paciente.imc;
    console.log(paciente.imc);
}else{
    console.log("Valor invalido");
    }
i++;
}
4 respostas
solução!
var pacientes = document.getElementsByClassName("paciente");

var i = 0;
while(pacientes[i]!=null){

var trpaciente = pacientes[i];

var tdNome = pacientes[i].getElementsByClassName("info-nome")[0];
var tdPeso = pacientes[i].getElementsByClassName("info-peso")[0];
var tdAltura = pacientes[i].getElementsByClassName("info-altura")[0];
var tdImc = pacientes[i].getElementsByClassName("info-imc")[0];


var paciente = {
        nome:tdNome.textContent,
        peso:tdPeso.textContent,
        altura:tdAltura.textContent,
        imc:tdImc.textContent
    };


if(paciente.altura!=0){
    paciente.imc = parseFloat((paciente.peso / (paciente.altura*paciente.altura)).toFixed(2));


    tdImc.textContent = paciente.imc;
    console.log(paciente.imc);
}else{
    console.log("Valor invalido");
    }
i++;
}

Tenta assim

Obrigado, funcionou para todos mas porque o 0? O que ele representa?

Deixa, deu outra lida no conteúdo e entendi o porque do 0, obrigado.

e porque dentro da classe os indicies dessas classes também são 0.. e voce neste caso estava entrando em indicies que nao existiam dentro da classe paciente entendeu?