1
resposta

Erro: Uncaught RangeError: Maximum call stack size exceeded

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

    var form = document.querySelector("#form-adiciona");
    //Extraindo informações do paciente do form
    var paciente = obtemPacienteDoFormulario(form);
    //cria a tr e a td do paciente
    var pacienteTr = montaTr(paciente);
    var erros = validaPaciente(paciente);
    console.log(erros);
    if(erros.length > 0 ){
      var mensagemErro = document.querySelector("#mensagem-erro");
       mensagemErro.textContent = erros;
       return;
    }

    // adicionando o paciente na tabela
    var tabela = document.querySelector("#tabela-pacientes");
    tabela.appendChild(pacienteTr);
    form.reset();

    var exibeMensagensDeErro = document.querySelector("#mensagens-erro");
    exibeMensagensDeErro.innerHTML = "";
  });

// A função exibeMensagensDeErro recebe o array de erros e cria uma <li> para cada mensagem de erro.
function exibeMensagensDeErro(erros){
  var ul = document.querySelector("#mensagens-erro");
  ul.innerHTML = "";
  erros.forEach(function(erro){ // O método forEach () chama uma função fornecida uma vez para cada elemento em uma matriz, em ordem.
      var li = document.createElement("li");
      li.textContent = erro;
      ul.appendChild(li);
  });
}

function obtemPacienteDoFormulario(form){
  var paciente = {
    nome: form.nome.value,
    peso: form.peso.value,
    altura: form.altura.value,
    gordura: form.gordura.value,
    imc: calculaImc(form.peso.value, form.altura.value)
  }
  return paciente;
  }

  function montaTr(paciente){
    var pacienteTr = montaTr(paciente);
    var erros = validaPaciente(paciente);
    if (erros.length > 0){
      exibeMensagensDeErro(erros);
      return;
    }
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente"); //adiciona classe à tr criada

    pacienteTr.appendChild(montaTd(paciente.nome,  "info-nome"));
    pacienteTr.appendChild(montaTd(paciente.peso, "info-peso"));
    pacienteTr.appendChild(montaTd(paciente.altura, "info-altura"));
    pacienteTr.appendChild(montaTd(paciente.gordura, "info-gordura"));
    pacienteTr.appendChild(montaTd(paciente.imc, "info-imc"));

    return pacienteTr;
  }

function montaTd(dado, classe){
  var td = document.createElement("td");
  td.classList.add(classe);
  td.textContent = dado;

  return td;
}

//Esta função cria um array e caso encontre algum erro em alguma propriedade do paciente, adiciona ao array de erros a mensagem que será exibida depois.

function validaPaciente(paciente){
  var erros = [];
  if(paciente.nome.length == 0){
    erros.push("O nome não pode ser em branco");
  }
  if(!validaPeso(paciente.peso)){
      erros.push("Peso é invalido");
  }
  if(!validaAltura(paciente.altura)) {
      erros.push("Altura é inválida!");
  }
  if(paciente.gordura.length == 0){
    erros.push("A gordura não pode ser em branco");
  }
  if(paciente.peso.length == 0){
    erros.push("O peso não pode ser em branco");
  }
  if(paciente.altura.length == 0){
    erros.push("A altura não pode ser em branco");
  }
  return erros;
}
1 resposta

Oi Francisco, desculpa, não ficou muito claro o problema. Em que momento essa mensagem aparece?