我一直在尝试创建待办事项列表,到目前为止,添加和删除工作正常。我必须添加一个部分来标记项目已完成,所以我得到了一些代码,以我喜欢的方式工作。在尝试使用代码时,我总是尝试在单独的文件上工作,所以当我开始工作时,我尝试将其转移到待办事项文件中,现在它无法正常工作。 我弄清楚它不起作用的原因是因为我没有针对项目id(当它输入到列表时生成的那个) 我尝试以与删除目标id相同的方式执行此操作:
function completeTodo() {
var todo_item = $(this).parent();
if (todo_item) {
var id = parseInt( todo_item.attr('id').replace('item', '') );
if (id) {
if (Modernizr.localstorage) {
if (localStorage.todos) {
var todo_list = JSON.parse(localStorage.todos);
if (localStorage.getItem("background") != null) {
getImage = localStorage.background;
$(".done").addClass(getImage);
}
$(document).ready(function () {
$('.palette').click(function () {
getImage = localStorage.background;
$(".done").removeClass(getImage);
localStorage.removeItem('background');
var setImage = $(this).attr(id);
$(".done").addClass(setImage);
localStorage.setItem("background", setImage);
});
});
localStorage.todos = JSON.stringify(todo_list);
drawTodos();
}
}
}
}
}
然而这不起作用,我无法找到办法。包含“.done”类的“section”标记是使用jquery中的id生成的:
$.each(todo_list, function(id, todo) {
todos = todos + '<section class="todo_item" id="item' + id + '"><span id="complete" class="palette complete">Complete</span><span id="incomplete" class="palette incomplete">Incomplete</span><span class="done">' + todo.name + '</span><a href="#" class="edit_todo"><img src="img/edit.png" alt="edit list item" /></a><a href="#" class="remove_todo"><img src="img/delete.png" alt="delete list item" /></a></section>';
});
如何定位'section'中生成的id,以便将其标记为完成?
答案 0 :(得分:0)
首先,看起来您将原始HTML存储在本地存储中。如果要更多地操作数据,最好将数据存储在对象(JSON,即JavaScript Object Notation)中。
todo_list = {
1 : "item 1",
2 : "item 2"
};
如果您想存储原始HTML,请完全替换原始HTML。