我有一个todo应用程序。我把它发送到jquery和localstorage.Codes是正确的但是不能从localstorage中删除任务
function appendTaskToList(val) {
$('#list').append($("<li id='task-' + i > <a href='#' class='done-btn'>Done</a>" +" " + val + " <a href='javascript:void(0)' class='cancel-btn'>Delete</a></li>").data("erdem", "12"));
}
if (localStorage['tasks']) {
var tasks = JSON.parse(localStorage['tasks']);
}else {
var tasks = [];
}
for(var i=0;i<tasks.length;i++) {
appendTaskToList(tasks[i]);
}
var addTask = function(){
var val = $('#name').val();
tasks.push(val);
localStorage["tasks"] = JSON.stringify(tasks);
appendTaskToList(val);
$('#name').val("").focus();
};
localStorage.username = $('#add-btn').click(addTask);
$('#name').keyup(function(e){
if (e.keyCode === 13) {
addTask();
}
});
$(document).delegate('.done-btn', 'click', function() {
$(this).parent('li').addClass('done');
return false;
});
$(document).delegate('.cancel-btn', 'click', function() {
$(this).parent('li').remove();
localStorage.removeItem($(this).parent('li').remove());
});
请帮助我,抱歉我的英文不好
答案 0 :(得分:1)
本地存储的removeItem()
方法在传递密钥名称时,将从存储中删除该密钥。
对于代码,您可以从li中提取任务的名称,然后使用它来更新tasks数组,然后更新本地存储tasks
值。
代码:
//extract task name from the li element
var nameOfTask = $(this).parent('li').clone().children().remove().end().text().trim();
//find index in the task element
var index = tasks.indexOf(nameOfTask);
tasks.splice(index,1);
localStorage["tasks"] = JSON.stringify(tasks);
请参阅以下参考:'https://jsfiddle.net/bhtvt1c3/1/'