目前我正面临着一个javascript问题。这是javascript代码:
$(document).ready(function() {
/*
createNewTodo("_OPDRACHT_", "_PRIO_", "_DONE_");
_OPDRACHT_ = wat er gedaan met worden.
_PRIO_ = prioriteit 1-5 (1 is hoogste, 5 is laagste)
_DONE_ = uitgevoerd 1-2 (1 is nee, 2 is ja
*/
function todo(opdracht,prio,done) {
this.opdracht = opdracht;
this.prio = prio;
this.done = done;
}
function createNewTodo(opdracht,prio,done) {
var createdTodo = new todo(opdracht,prio,done);
if ( localStorage.todoCount == undefined ) {
localStorage.setItem('todoCount', 0)
}
var todoSize = parseInt(localStorage.todoCount) + 1;
commitToStorage(todoSize,createdTodo);
}
function addList(){
var val = $('#name').val();
var tjap = createNewTodo(val,"1","1");
}
function commitToStorage(objectCount,newObject) {
var item = + objectCount;
localStorage.setItem('todoCount', objectCount);
localStorage.setItem(item, JSON.stringify(newObject));
}
var todoCount = localStorage.getItem('todoCount');
for (i=1;i<=todoCount;i++)
{
var number = parseInt(i) + 1;
var todo = jQuery.parseJSON(localStorage.getItem(+ i));
createMarkup(todo);
}
function createMarkup(todo) {
$('ul#items').append(
"<li>" +
todo.opdracht + " " +
"</li>"
);
}
$('#add-btn').click(addList);
});
当我点击add-btn时,它会在localstorage中插入一个带有值数组的项目。在刷新页面之前,一切正常。我第一次可以在localstorage中添加任意数量的项目而没有问题,但是当我在刷新页面后尝试添加项目时,我收到以下错误:未捕获TypeError:对象不是函数。在互联网上搜索了很多,但无法找到合适的解决方案。有谁可以帮助我并推动我朝着正确的方向前进?提前谢谢。
答案 0 :(得分:0)
for
循环中没有单独的局部作用域,因此您要将一个对象分配给先前声明为函数的名为todo
的变量,而不是创建一个具有相同名称的新局部变量。存储您的待办事项数据。
您可以阅读有关此特定主题以及大多数功能和“陷阱”的更多信息。 http://bonsaiden.github.io/JavaScript-Garden/#function.scopes上的语言。我强烈建议你阅读整个页面,这将为你节省很多时间。