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

quando clico aparece 5 pacientes, sendo que só dei um clique

var titulo = document.querySelector(".titulo");

titulo.textContent = "Aparecida Nutricionista";

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

for(var i = 0; i < pacientes.length; i++){

var paciente = pacientes[i];

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

var altura = tdAltura.textContent; var peso = tdPeso.textContent;

var imc = peso/(altura*altura); console.log(imc);

var tdImc = paciente.querySelector(".info-imc"); tdImc.textContent = imc;

var pesoEhvalido = true; var alturaEhvalida = true;

if(peso <= 0 || peso >= 1000){ console.log("peso invalido"); pesoEhvalido = false; tdImc.textContent = "peso invalido"; paciente.classList.add("paciente-invalido");

} if(altura <= 0 || altura >= 3.00){ console.log("altura invalida") alturaEhvalida = false; tdImc.textContent = "altura invalida" paciente.classList.add("paciente-invalido"); }

if(alturaEhvalida && pesoEhvalido){ var imc = peso / (altura * altura); tdImc.textContent = imc.toFixed(2);

}

var botaoadicionar = document.querySelector("#adicionar-paciente"); botaoadicionar.addEventListener("click", function(){ event.preventDefault(); event.stopPropagation();

var form = document.querySelector("#form-adiciona");

var nome = form.nome.value;
var peso = form.peso.value;
var altura = form.altura.value;
var gordura = form.gordura.value;

var pacienteTr = document.createElement("tr");

var nomeTd = document.createElement("td");
var pesoTd = document.createElement("td");
var alturaTd = document.createElement("td");
var gorduraTd = document.createElement("td");
var imcTd = document.createElement("td");

nomeTd.textContent = nome;
pesoTd.textContent = peso;
alturaTd.textContent = altura;
gorduraTd.textContent = gordura;

pacienteTr.appendChild(nomeTd);
pacienteTr.appendChild(pesoTd);
pacienteTr.appendChild(alturaTd);
pacienteTr.appendChild(gorduraTd);

var tabela = document.querySelector("#tabela-pacientes");

tabela.appendChild(pacienteTr);

}); }

insira seu código aqui
1 resposta
solução!

O seu problema é o seguinte, você está fechando o for no final de tudo, ou seja, quando você percorre a sua lista de pacientes você está adicionado 5 vezes o mesmo evento de adicionar. Veja que a tag } está no final do seu arquivo, esse for deve ser fechado antes de buscar o botão de adicionar, devento ficar assim:

var titulo = document.querySelector(".titulo");

titulo.textContent = "Aparecida Nutricionista";

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

for (var i = 0; i < pacientes.length; i++) {
    var paciente = pacientes[i];

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

    var altura = tdAltura.textContent; var peso = tdPeso.textContent;

    var imc = peso / (altura * altura); console.log(imc);

    var tdImc = paciente.querySelector(".info-imc"); tdImc.textContent = imc;

    var pesoEhvalido = true; var alturaEhvalida = true;

    if (peso <= 0 || peso >= 1000) {
        console.log("peso invalido"); pesoEhvalido = false; tdImc.textContent = "peso invalido"; paciente.classList.add("paciente-invalido");

    } if (altura <= 0 || altura >= 3.00) { console.log("altura invalida") alturaEhvalida = false; tdImc.textContent = "altura invalida" paciente.classList.add("paciente-invalido"); }

    if (alturaEhvalida && pesoEhvalido) {
        var imc = peso / (altura * altura); tdImc.textContent = imc.toFixed(2);

    }

}

var botaoadicionar = document.querySelector("#adicionar-paciente"); botaoadicionar.addEventListener("click", function () {
    event.preventDefault(); event.stopPropagation();

    var form = document.querySelector("#form-adiciona");

    var nome = form.nome.value;
    var peso = form.peso.value;
    var altura = form.altura.value;
    var gordura = form.gordura.value;

    var pacienteTr = document.createElement("tr");

    var nomeTd = document.createElement("td");
    var pesoTd = document.createElement("td");
    var alturaTd = document.createElement("td");
    var gorduraTd = document.createElement("td");
    var imcTd = document.createElement("td");

    nomeTd.textContent = nome;
    pesoTd.textContent = peso;
    alturaTd.textContent = altura;
    gorduraTd.textContent = gordura;

    pacienteTr.appendChild(nomeTd);
    pacienteTr.appendChild(pesoTd);
    pacienteTr.appendChild(alturaTd);
    pacienteTr.appendChild(gorduraTd);

    var tabela = document.querySelector("#tabela-pacientes");

    tabela.appendChild(pacienteTr);
});