Pessoal, boa tarde.
Estou querendo colocar a situação do paciente(abaixo do peso, acima do peso, etc...), sendo assim, inclui uma nova coluna no HTML de situação conforme segue abaixo
<h2>Meus pacientes</h2>
<table>
<tr>
<th>Nome</th>
<th>Peso(kg)</th>
<th>Altura(m)</th>
<th>IMC</th>
<th>Situacao</th>
</tr>
<tr class="paciente">
<td class="info-nome">Leonardo</td>
<td class="info-peso">40</td>
<td class="info-altura">1.67</td>
<td class="info-imc"></td>
<td class="info-situac"></td>
</tr>
<tr class="paciente">
<td class="info-nome">Paulo</td>
<td class="info-peso">100</td>
<td class="info-altura">2.00</td>
<td class="info-imc"></td>
<td class="info-situac"></td>
</tr>
</table>
e então criei no arquivo calcula-imc.js os 'IF's' com a situação:
var botao = document.getElementById("calcula-imcs");
//botao.onclick = calculaTodosImcs;
botao.addEventListener("click", function(){
var trsPacientes = document.getElementsByClassName("paciente"); //ArrayPaciente
percorreArray(trsPacientes, function(pacienteTr){
var tdNome = pacienteTr.getElementsByClassName("info-nome")[0];
var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0];
var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0];
//var tdSituacao = pacienteTr.getElementsByClassName("info-situac")[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);
if (imc <= 17){
var tdSituacao = pacienteTr.getElementsByClassName("info-situac")[0];
tdSituacao.textContent = ("Muito abaixo do peso");
}
else if (imc >= 17.01 && imc <= 18.49){
var tdSituacao = pacienteTr.getElementsByClassName("info-situac")[0];
tdSituacao.textContent = ("Abaixo do peso");
}
else if (imc >= 18.50 && imc <= 24.49){
var tdSituacao = pacienteTr.getElementsByClassName("info-situac")[0];
tdSituacao.textContent = ("Peso normal");
}
else if (imc >= 25 && imc <= 29.99){
var tdSituacao = pacienteTr.getElementsByClassName("info-situac")[0];
tdSituacao.textContent = ("Acima do peso");
}
else if (imc >= 30 && imc <= 34.99){
var tdSituacao = pacienteTr.getElementsByClassName("info-situac")[0];
tdSituacao.textContent = ("Obesidade I");
}
else if (imc >= 35 && imc <= 39.99){
var tdSituacao = pacienteTr.getElementsByClassName("info-situac")[0];
tdSituacao.textContent = ("Obesidade II (severa)");
}
else if(imc >= 40){
var tdSituacao = pacienteTr.getElementsByClassName("info-situac")[0];
tdSituacao.textContent = ("Obesidade II (severa)");
}
return imc;
} else{
console.log("Altura Errada")
}
}
}
var imc = pacienteAtual.pegaImc();
var tdImc = pacienteTr.getElementsByClassName("info-imc")[0];
tdImc.textContent = imc;
console.log(imc);
});
});
Os pacientes que já estão no HTML aparece a situação direitinho, mas quando tento adicionar, recebo estes erros:
Uncaught TypeError: Cannot set property 'textContent' of undefined
at Object.pegaImc (calcula-imc.js:21)
at calcula-imc.js:57
at percorreArray (percorre.js:5)
at HTMLButtonElement.<anonymous> (calcula-imc.js:7)
Conseguem me ajudar, por gentileza?