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

calculo imc só funciona no paciente 1 e nos novos que eu adiciono

Oi gente, não sei o que rolou.. Depois que eu criei o doc form.js o imc só funciona para o paciente 1 e quando eu adiciono um novo, os demais ficam zerados https://codepen.io/laantonechen/pen/ZEewZGd

Alguém pode me ajudar, por favor?

2 respostas
solução!

Fala Laleska, tudo bem?

O que acontece, é que você está selecionando apenas 1 paciente, pois você utiliza o querySelector no id primeiro-paciente:

O correto seria criar uma variável pacientes, que receberia como valor um querySelectorAll na nossa classe paciente(logo que todos pacientes possuem essa classe) que retornará para nós um array contendo todos resultados daquela seleção:

Dando um console log na variável que acabamos de criar, podemos ver que nos retornará a nossa array contendo todos nossos pacientes:

Agora que ja temos todos os nossos pacientes em uma array, vamos precisar percorrer por cada um, aplicando o imc e as verificações. Então para criarmos o nosso looping, utilizaremos o for, a sintaxe do for é a seguinte:

for (valor inicial; condição para parar o looping; operação a ser execudada a cada looping sobre a variavel de incialização) {
        //código a ser repetido
}

Então para criarmos o nosso looping, começaremos declarando o valor inicial como zero, o nosso looping só irá parar quando chegar ao final da nossa array, para isso utilizaremos a propriedade length que nos retorna quantos elementos temos na nossa array e também, a cada looping iremos adicionar + 1 á nossa variavel de inicialização para que possa chegar ao valor total da nossa array:

Agora, o que faremos será colocar todo o código que define o imc do nosso paciente, dentro desse looping:

Então, o que o nosso código fará, é passar por cada item do nosso array aplicando o imc, porém, não funcionará ainda, pois o nosso código utiliza a variavel paciente para fazer a injeção dos dados, pois nela é aonde fica cada paciente, então, o que faremos é criar uma variável, chamada paciente, que irá ter o valor do paciente atual do nosso looping, selecionando a nossa array, especificando que queremos usar a variavel i(que nesse momento equivale ao index do nosso looping, ou seja, em qual looping/momento da array estamos ) para especificar qual paciente queremos:

Agora tudo está funcionando normalmente:

O código completo que criamos está disponivel clicando aqui

Uma explicação melhor do que fizemos está disponivel na aula 3 desse mesmo curso, no primeiro video, acesse-o clicando aqui

Espero ter ajudado, bons estudos :D

Muito Obrigada Mateus!

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