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

Não aparece o imc do paciente - JavaScript Aula 3

Pessoal estou com a seguinte dúvida, minha pagina deveria exibir o imc dos pacientes na tag infor-imc, e tambem imprimir no console, porem não esta exibindo nada. Nao sei qual é o erro, Obrigado

Segue abaixo o código calculaImc.js

var trsPacientes = document.getElementsByClassName("paciente"); //array de pacientes

var posicaoAtual=0;
while (posicaoAtual> trsPacientes.length){

    var pacienteTr = trsPacientes[posicaoAtual];
        var    tdNome = pacienteTr.getElementsByClassName("info-nome")[0];
        var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0];
        var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0];
            var paciente = {nome: tdNome.textContent , peso: tdPeso.textContent, altura: tdAltura.textContent};

if (paciente.altura !=0){
    var imc = paciente.peso/(paciente.altura*paciente.altura);
    var tdImc = pacienteTr.getElementsByClassName("info-imc")[0];

    tdImc.textContent = imc;
        console.log(imc);
}else {
    console.log("Não é possivel calcular sem a altura do paciente");
}
posicaoAtual++;
}

Abaixo o código index.html

<!doctype html>
<html lang="en">

<head>
<meta charset="UTF-8">
<title>Meus pacientes</title>
<link rel="stylesheet" type="text/css" href="reset.css">

<link rel="stylesheet" type="text/css" href="alura.css">
</head>
<body>
<header>
<div class="container">

<h1>Meus pacientes</h1>
</div>
</header>
<main class="container">
<section>
<h2>Meus pacientes</h2>
<table>
<tr>
<th>Nome</th>
<th>Peso(kg)</th>
<th>Altura(m)</th>
<th>IMC</th>
</tr>
<tr class="paciente">
<td class="info-nome">Leonardo</td>
<td class="info-peso">57</td>
<td class="info-altura">1.67</td> 
<td class="info-imc"></td>
</tr>
<tr class="paciente">
<td class="info-nome">Paulo</td>
<td class="info-peso">80</td>
<td class="info-altura">1.75</td>
<td class="info-imc"></td>
</tr>
<tr class="paciente">
<td class="info-nome">Natan</td>
<td class="info-peso">78</td>
<td class="info-altura">1.85</td>
<td class="info-imc"></td>
</tr>
</table>
<button id="calcula-imcs" class="botao ">Calcular Imcs</button> 
</section>
<section>
<h2>Adicionar novo paciente</h2>
<form>
<fieldset>
<label for="nome">Nome:</label>
<input id="campo-nome" type="text" placeholder="digite o nome do seu paciente">

</fieldset>
<fieldset class="campo-medio">

<label for="peso">Peso:</label>
<input id="campo-peso" type="text" placeholder="digite o peso do seu paciente">
</fieldset>
<fieldset class="campo-medio">
<label for="altura">Altura:</label>
<input id="campo-altura" type="text" placeholder="digite a altura do seu paciente">
</fieldset>
<button id="adicionar-paciente" class="botao bto-principal">Adicionar</button>
</form>

</section>
</main>

<script src = "calculaImc.js"></script>
</body>

</html>
4 respostas
solução!

Oi Antonio! Tem um pequeno problema no seu javascript.

Nessa linha: while (posicaoAtual> trsPacientes.length){

Deveria ser: while (posicaoAtual < trsPacientes.length){

Ou seja, enquanto o valor de posicaoAtual for menor que o valor do tamanho do array de pacientes, ele faz as coisas que estão dentro do while

O problema está no While. Faça a seguinte alteração:

var trsPacientes = document.getElementsByClassName("paciente"); //array de pacientes

var posicaoAtual=0;
while (posicaoAtual < trsPacientes.length){

//Restante do codigo

}

Obrigado Galera, faltou atenção ai rs

Boa Antonio! Marca uma das respostas como solução, por favor?

Aí se vc tiver mais alguma dúvida, pode abrir outro tópico!

Abraços!