Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Quando clico em "adicionar paciente", o script está sendo disparado 5 vezes em vez de 1 só.

var titulo = document.querySelector(".titulo");
titulo.textContent = "FSEVEN Nutrição";

var pacientes = document.querySelectorAll(".paciente");
console.log(pacientes);

for (var i=0; i<pacientes.length; i++) {
  var trPaciente = pacientes[i];
  var tdPeso = trPaciente.querySelector(".info-peso");
  var peso = tdPeso.textContent;
  var tdAltura = trPaciente.querySelector(".info-altura");
  var altura = tdAltura.textContent;

  var temErroValidacao = false;
  var alturaValida = true;
  var tdImc = trPaciente.querySelector(".info-imc");
  var textoImc;

  if (peso<=0 || peso>700) {
    temErroValidacao = true;
    textoImc = "peso inválido";
    trPaciente.classList.add("paciente-invalido");
  } else if(altura<=0 || altura>300) {
    temErroValidacao = true;
    textoImc = "altura inválida";
  } else {
    var imc = peso/(altura*altura);
    textoImc = imc.toFixed(1);
  }
  if (temErroValidacao == true) {
    trPaciente.classList.add("paciente-invalido");
  }
  tdImc.textContent = textoImc;

  var botaoAdicionar = document.querySelector("#adicionar-paciente");
  botaoAdicionar.addEventListener("click", function(evento) {
    evento.preventDefault();
    //console.log("botão adicionar foi clicado");
    var form1 = document.querySelector("#form-adiciona");
    var nome = form1.nome.value;
    var peso = form1.peso.value;
    var altura = form1.altura.value;
    var gordura = form1.gordura.value;

    var trNovoPaciente = document.createElement("tr");
    //alert('criação de tr');
    var tdNome = document.createElement("td");
    var tdAltura = document.createElement("td");
    var tdPeso = document.createElement("td");
    var tdGordura = document.createElement("td");
    tdNome.textContent = nome;
    tdPeso.textContent = peso;
    tdAltura.textContent = altura;
    tdGordura.textContent = gordura;
    trNovoPaciente.appendChild(tdNome);
    trNovoPaciente.appendChild(tdPeso);
    trNovoPaciente.appendChild(tdAltura);
    trNovoPaciente.appendChild(tdGordura);

    var tabelaPacientes = document.querySelector("#tabela-pacientes");
    tabelaPacientes.appendChild(trNovoPaciente);
  })
}
1 resposta
solução!

Olá! Eu já descobri a causa e resolvi o problema. Eu tinha deixado o tratamento de evento dentro do loop FOR.