Javascript 超出最大调用堆栈大小错误。。。我怎么修理?

Javascript 超出最大调用堆栈大小错误。。。我怎么修理?,javascript,arrays,json,object,local-storage,Javascript,Arrays,Json,Object,Local Storage,我试图编写一个待办事项列表,它从输入表单中获取值,将其存储到对象中,将对象推送到数组中,对数组进行字符串化,将其存储在本地存储中,从本地存储中检索,并将其发布到表中 我在引用创建对象的行时遇到了超出最大调用堆栈大小的错误。。。我不完全确定我是否正确地将输入字段中的值保存到对象中…帮助?多谢各位 var table = document.getElementById("tableBody"); toDoArray = []; function buildTable(){ addToStora

我试图编写一个待办事项列表,它从输入表单中获取值,将其存储到对象中,将对象推送到数组中,对数组进行字符串化,将其存储在本地存储中,从本地存储中检索,并将其发布到表中

我在引用创建对象的行时遇到了超出最大调用堆栈大小的错误。。。我不完全确定我是否正确地将输入字段中的值保存到对象中…帮助?多谢各位

var table = document.getElementById("tableBody");

toDoArray = [];


function buildTable(){
addToStorage();
var retrievedTaskObject = localStorage.getItem("task");
var parsedObject = JSON.parse(retrievedTaskObject);
var addTheTaskName = parsedObject.taskName;
var addTheTaskDate = parsedObject.taskDate;
  var tableHTML = "";
  for(i=0; i < toDoArray.length; i++){
    var row = table.insertRow(0);
    var cellName = row.insertCell(0);
    var cellDate = row.insertCell(1);
    var cellId = row.insertCell(2);
    var cellCheck = row.insertCell(3);
    cellName.innerHTML= parsedObject[i].name;
    cellDate.innerHTML= parsedObject[i].date;
    cellId.innerHTML = 1 + i;
    var checkStuff = "<input type='checkbox'>";
    tableHTML += checkStuff;

  }
  document.getElementById("tableBody").innerHTML = tableHTML;
}

function submitForm(name,date) {
  var taskObject = {
    name: name,
    date: date,
  };

var addTaskName = document.getElementById("taskName").value;
var addTaskDate = document.getElementById("dateTask").value;
var taskSomething = submitForm(addTaskName,addTaskDate);
  toDoArray.push(taskObject);
  buildTable();
};

function addToStorage(){
  var storedArray = JSON.stringify(toDoArray);
  localStorage.setItem("task",storedArray);}

通过在iself中调用submitForm方法,可以执行递归。由于不存在停止递归的中断条件,因此会出现最大堆栈错误

function submitForm(name,date) {
  var taskObject = {
    name: name,
    date: date,
  };

var addTaskName = document.getElementById("taskName").value;
var addTaskDate = document.getElementById("dateTask").value;
var taskSomething = submitForm(addTaskName,addTaskDate);
  toDoArray.push(taskObject);
  buildTable();
};
应该是这样的-

function submitForm(name,date) {
    var addTaskName = document.getElementById("taskName").value;
    var addTaskDate = document.getElementById("dateTask").value;
    var taskSomething = getTaskObj(addTaskName,addTaskDate);
      toDoArray.push(taskSomething);
      buildTable();
};

function getTaskObj(taskName,taskData){
var taskObject = {
        name: taskName,
        date: taskData,
      };
 return taskObject;
}

我猜想,您是无意中从函数本身内部调用submitForm的。这导致调用堆栈被超出。好的,现在im getting taskObject未定义。我是否将错误的内容放入toDoArray.push?我应该在那里提交表格吗?对于如何从表单中获取新创建的对象和我的值,然后将其推入数组,我有点困惑……您必须将getTaskObj方法的结果推入数组,这是代码中的一部分。请使用升级代码