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!

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