Olá! Estava refatorando o código como o professor e estou tendo um erro que não consigo identifica de onde vem (sei a linha, mas não sei porquê está dando este erro.
Ao tentar incluir um paciente na tabela, recebo a reposta
Uncaught ReferenceError: nomeInput is not defined at HTMLButtonElement. (criar-form.js:58)
Entendo que dentro da função, nomeInput está como uma variável local. E ela está sendo chamada posteriormente por outra variável. Não consigo entender como o código do professor não deu o mesmo erro e gostaria de saber como arrumar.
Alguma ideia?
Código abaixo
//pegando um botão no mundo HTML e atrelando uma função e ele
/////////////////////////////////////
////////REFATORANDO O CÓDIGO ////////
/////////////////////////////////////
var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(evento){
evento.preventDefault();
// captando os valores que estão dentro dos inputs, via formulario, usando "value"
/*
var formulario = document.querySelector("#form-adiciona")
var nomeInput = formulario.nome.value;
var pesoInput = formulario.peso.value;
var alturaInput = formulario.altura.value;
var gorduraInput = formulario.gordura.value;
*/
var formulario = document.querySelector("#form-adiciona")
//CRIANDO OBJETOS//
var paciente = extraiInfosDoForm(formulario);
function extraiInfosDoForm(form){
var paciente = {
nomeInput: form.nome.value,
pesoInput: form.peso.value,
alturaInput: form.altura.value,
gorduraInput: form.gordura.value
}
return paciente
}
//criando os elementos html tds e a tr
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");
// aqui significa que o conteúdo de texto da td criada é igual ao valor do input
nomeTd.textContent = nomeInput;
pesoTd.textContent = pesoInput;
alturaTd.textContent = alturaInput;
gorduraTd.textContent = gorduraInput;
imcTd.textContent = calculaImc(pesoInput, alturaInput);
//colocando as tds como filhos da tr - pacienteTr
pacienteTr.appendChild(nomeTd);
pacienteTr.appendChild(pesoTd);
pacienteTr.appendChild(alturaTd);
pacienteTr.appendChild(gorduraTd);
pacienteTr.appendChild(imcTd);
//colocando a tr formada dentro da tabela de pacientes
var tabela = document.querySelector("#tabela-pacientes")
tabela.appendChild(pacienteTr);
var paciente = extraiInfosDoForm(formulario);
})