3
respostas

Só calcula o primeiro paciente

Olá.

Meu código só calcula o primeiro paciente. E dentro do console, só retorna também o primeiro paciente.

Alguem poderia me ajudar?

Obrigada.

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida By Maris";

var paciente = document.querySelectorAll(".paciente");

for(var posicao=0; posicao <paciente.length; posicao++){

  console.log(paciente[posicao]);

  var paciente=paciente[posicao];

  var tdPeso=paciente.querySelector(".info-peso");
  var peso=tdPeso.textContent;
  var tdAltura=paciente.querySelector(".info-altura");
  var altura=tdAltura.textContent;
  var resultadoImc=paciente.querySelector(".info-imc");

  var pesoEhValido = true;
  var alturaEhValida = true;

  if(peso < 0|| peso >= 1000){
    pesoEhValido = false;
    console.log("peso invalido")
    resultadoImc.textContent="Peso Inválido";
  //  resultadoImc.textContent("peso inválido")

  }

  if (altura < 0 || altura > 3){
    alturaEhValida = false;
    resultadoImc.textContent="Altura Inválida";
  }

  if (pesoEhValido && alturaEhValida){
    var imc = peso/(altura*altura);
    resultadoImc.textContent=imc;
  }
}
3 respostas

Boa noite Maristela,

Para resolver esse problema você vai precisar usar duas coisas, um array e uma estrutura de repetição . Dê uma olhada na sua variável paciente, ela busca todos os elementos com a classe paciente, dessa maneira ela já é um array. Pense no array como um grupo de elementos e cada elemento tem uma numeração ( começando do zero), então temos paciente[0],paciente[1], paciente[2], etc.

Agora você precisa de uma estrutura de repetição. A mais simple é o while, ele repete um código por um número de vezes, veja o exemplo abaixo.

var contador = 0;

while (contador < 10 ) {
    alert(contador);
    contador = contador + 1;
}

Agora você precisa descobrir quantos pacientes você tem, podemos descobrir isso assim:

var numeroDePacientes = paciente.length;

Agora você precisa pegar tudo que faz para o seu paciente e colocar dentro de um laço, assim você vai repetir essa operação para cada paciente. Lembre-se que o paciente agora tem um índice (paciente[0]) e esse índice tem que mudar de acordo com a repetição. Dê uma olhada no vídeo do capítulo e tente aplicar essas idéias ao seu código.

Abraços

Eu fiz mas com o for, ne? Vou tentar fazer com o While, mas gostaria de saber por que o meu for não está funcioncando

for(var posicao=0; posicao <paciente.length; posicao++)

Boa noite, Maristela. Fiz o teste aqui com o seu for e listou normalmente todos os pacientes no console.

Pode ser que no seu nem todas as suas tr's na tabela (no html), tenham a classe paciente. Recomendo verificar o seu html.

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