Sempre que tento colocar o .tofixed(2)
direto no return calculoImc
da função calculaImc(peso,altura)
, como fez o professor, e tirá-lo de
if(pesoValido && alturaValida) {
tdImc.textContent = calculoImc.toFixed(2);
}
}
ele diz que o .tofixed(2)
não é uma função. E aí zera os imcs na tabela. Mas se desfaço essa ação e deixo tudo como estava, não dá erro. Por quê?
Quero poder colocar o calculaImc(peso,altura)
já com o .tofixed(2)
no return calculoImc
para que eu possa também calcular os elementos do form sem mil casas decimais.
Eu já havia separado em funções, então meu código está um pouco diferente do da aula. Mas está assim agora:
var titulo = document.querySelector(".titulo"); //eu tenho que buscar o elemento no html para poder modificá-lo
titulo.textContent = ("Aparecida Nutricionista");
var pacientes = document.querySelectorAll(".paciente");
var paciente;
var tdPeso;
var tdAltura;
var peso;
var altura;
var tdImc;
var calculoImc;
var pesoValido;
var alturaValida;
function calculaImc(peso,altura) {
calculoImc = peso / (altura * altura);
return calculoImc;
}
function armazenaImc() {
tdPeso = paciente.querySelector(".info-peso");
tdAltura = paciente.querySelector(".info-altura");
peso = tdPeso.textContent;
altura = tdAltura.textContent;
tdImc = paciente.querySelector(".info-imc");
calculaImc(peso,altura);
}
function verificaPesoAltura() {
pesoValido = true;
alturaValida = true;
if(peso <= 0 || peso >= 250) {
pesoValido = false;
tdPeso.textContent = ("Peso inválido!"); //é necessário modificar o textContent diretamente na var do querySelector e não na var peso = tdPeso.textContent
}
if(altura <= 0 || altura >= 3.00) {
alturaValida = false;
tdAltura.textContent = ("Altura inválida!"); //é necessário modificar o textContent diretamente na var do querySelector e não na var altura = tdPeso.textContent
}
if(pesoValido && alturaValida) {
tdImc.textContent = calculoImc.toFixed(2);
}
}
function mostraImc() {
for(var i = 0; i < pacientes.length; i++) {
paciente = pacientes[i];
armazenaImc();
verificaPesoAltura();
}
}
mostraImc();
var botaoAdicionar = document.querySelector(".botao-bto-principal");
botaoAdicionar.addEventListener("click", function (event) {
event.preventDefault(); // impede que a pg recarregue ao enviar as infos do form
//captar o valor dos inputs
var form = document.querySelector(".adiciona-info");
var nome = form.nome.value; //usa-se o name colocado no input
var peso = form.peso.value;
var altura = form.altura.value;
var gordura = form.gordura.value;
//criar a lista nova
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;
imcTd.textContent = calculaImc(peso,altura);
pacienteTr.appendChild(nomeTd);
pacienteTr.appendChild(pesoTd);
pacienteTr.appendChild(alturaTd);
pacienteTr.appendChild(gorduraTd);
pacienteTr.appendChild(imcTd);
var tabela = document.querySelector("#tabela-pacientes");
tabela.appendChild(pacienteTr);
});