在my todo app project here中,我遇到了问题。
重现问题:添加一个未加星标的项目,例如:x
,现在,如果您为此项目加注星标/取消星标,它将在localStorage中更新。现在,将此项目编辑为,例如:xxx
,现在,如果您对此项目进行加星/取消加星标,则不会更新localStorage。原因是,阅读的项目文本为xxxxxx
和不 xxx
。我在console.log()
检查了它。
为什么会这样?我在这里做错了什么?
代码:
function toggleStar(element, pushToUndoStack){
console.log($(element).parent().find('p').text());
// fetch this starred item content to locate it in the localStorage
var starred_item = $(element).parent().find('p').text();
// fetch current items from localStorage
var todo_items = getLocalStorageData();
// parse to locate 'that' item
$.each(todo_items,function(index,item){
//console.log(item[0]);
if(starred_item.toLowerCase() === item[0].toLowerCase()){
//console.log("found -> " + item[0]);
// toggle starred true/false
item[1] = !item[1];
//console.log(item[1]);
// cut the loop
return false;
}
});
// update localStorage
localStorage.setItem('todo_items', JSON.stringify(todo_items));
if(pushToUndoStack){
// update undo stack
todo_item.undoStack.push(['toggleStar',$(element).parent().find('button').text(),$(element).parent().find('.star').prop('checked')]);
$("#undo").removeAttr('disabled');
//console.log(todo_item.undoStack);
}
}
答案 0 :(得分:2)
在您的JS
代码中,function editItem(element, pushToUndoStack)
代码为:
// replace textarea with the new text
$(element).find('textarea').replaceWith("<p class='item_content'>"+edited_text+"</p>");
每次编辑任务时,都会复制<p class='item_content'></p>
。
用
// replace textarea with the new text
$(element).find('textarea').replaceWith(edited_text);