[英]maximum call stack size exceeded error… how do I fix?
我正在嘗試編寫一個待辦事項列表,該列表將從輸入表單中獲取值,將其存儲到對象中,將對象推入數組,對該數組進行字符串化,將其存儲在本地存儲中,從本地存儲中檢索,然后發布在桌子上。
我在創建對象的行中收到錯誤“超出最大調用堆棧大小” ...我不確定是否正在執行將輸入字段中的值保存到對象中的部分正確...幫助嗎? 謝謝
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.