Estou tentando adicionar o paciente já com a casa decimal, mas o .toFixed(1) está dando erro;
var altura = formularioPaciente.altura.value;
alturaTd.textContent = altura.toFixed(1);
Estou tentando adicionar o paciente já com a casa decimal, mas o .toFixed(1) está dando erro;
var altura = formularioPaciente.altura.value;
alturaTd.textContent = altura.toFixed(1);
Oi Flavio,
E qual erro ele está dando ?
form.js:37 Uncaught TypeError: altura.toFixed is not a function
at HTMLButtonElement.<anonymous> (form.js:37)
Pode colocar a sua tag <form>
e o seu código completo Javascript para que eu possa debuggar melhor o problema ?
<form id="formulario-paciente">
<div class="grupo-nome">
<label for="nome">Nome:</label>
<input id="nome" name="nome" type="text" placeholder="digite aqui o nome do paciente" value="Flávio José dos Passos" class="campo">
</div>
<div class="grupo">
<label for="peso">Peso (Kg)</label>
<input id="peso" name="peso" type="text" placeholder="digite aqui o peso do paciente" value="92" class="campo">
</div>
<div class="grupo">
<label for="altura">Altura (m)</label>
<input id="altura" name="altura" type="text" placeholder="digite aqui a altura do cliente" value="1.82" class="campo">
</div>
<div class="grupo">
<button id="adicionar-paciente" class="botao">Adicionar</button>
</div>
</form>
var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(event){
event.preventDefault();
var formularioPaciente = document.querySelector("#formulario-paciente");
var nome = formularioPaciente.nome.value;
var peso = formularioPaciente.peso.value;
var altura = formularioPaciente.altura.value;
var imc = (peso / (altura * altura)).toFixed(1);
var novoPacienteTr = document.createElement("tr");
var imputTd = document.createElement("td");
var checkIn = document.createElement("input");
checkIn.setAttribute("type", "checkbox");
imputTd.appendChild(checkIn);
var numTd = document.createElement("td");
numTd.textContent = "1";
numTd.classList.add("num");
var nomeTd = document.createElement("td");
nomeTd.textContent = nome;
nomeTd.classList.add("nome");
var pesoTd = document.createElement("td");
pesoTd.textContent = peso;
pesoTd.classList.add("peso");
var alturaTd = document.createElement("td");
alturaTd.textContent = altura;
alturaTd.classList.add("altura");
var imcTd = document.createElement("td");
imcTd.textContent = imc;
imcTd.classList.add("imc");
novoPacienteTr.appendChild(imputTd);
novoPacienteTr.appendChild(numTd);
novoPacienteTr.appendChild(nomeTd);
novoPacienteTr.appendChild(pesoTd);
novoPacienteTr.appendChild(alturaTd);
novoPacienteTr.appendChild(alturaTd);
novoPacienteTr.appendChild(imcTd);
var tabelaPaciente = document.querySelector("#lista-de-pacientes");
var primeiroPaciente = tabelaPaciente.querySelector("tr:first-child");
tabelaPaciente.insertBefore(novoPacienteTr, primeiroPaciente);
});
Oi Flávio,
Demorei para identificar o seu erro pois este código está bem diferente do que é proposto no curso, mas o que está acontecendo é o seguinte:
A função .toFixed(1)
só pode ser utilizados em números no Javascript,e neste caso a altura como veio do formulário está sendo interpretada como uma string
. Você pode até verificar isto fazendo assim:
console.log(typeof altura);
Se você quer poder utilizar a função toFixed()
nela, você tem que primeiro converter o número para um float
, assim:
var altura = formularioPaciente.altura.value;
var alturaFloat = parseFloat(altura);
alturaTd.textContent = alturaFloat.toFixed(1);
Faça o teste e me diga se deu tudo certo :) !
Com sua dica meu código ficou assim.
var formularioPaciente = document.querySelector("#formulario-paciente");
var altura = parseFloat(formularioPaciente.altura.value).toFixed(1);
Obrigado e funcionou.
Quando você diz que o código está muito diferente do proposto no curso, isso é que ele está ruim.