2015-07-21 149 views
2

我想刪除數組中的項目,但它不會被刪除。我有該項目的ID,但我無法使用它。你能告訴我如何使用tasks數組中的物品ID嗎?removeItem localStorage不起作用

function appendTaskToList(val, task_id) { 
    $('#list').append($("<li> <a href='#' class='done-btn'>Done</a>" + 
     " " + val + " <a href='javascript:void(0)' class='cancel-btn'>Delete</a></li>") 
    .data("task", task_id)); 
} 

if (localStorage['tasks']) { 

    var tasks = JSON.parse(localStorage['tasks']); 
    for(var i=0;i<tasks.length;i++) { 
     appendTaskToList(tasks[i], i); 
    } 

}else { 

    var tasks = []; 
} 

var addTask = function(){ 
    var val = $('#name').val(); 
    tasks.push(val); 
    var task_id = tasks.indexOf(val); 
    localStorage["tasks"] = JSON.stringify(tasks); 
    appendTaskToList(val, task_id); 
    $('#name').val("").focus(); 
}; 

$('#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(e) { 
    var task_elem = $(e.target).closest("li"); 

    console.log(task_elem.data()); 
    var taks_id = task_elem.data(); 
    $(this).parent('li').remove(); 

    localStorage.removeItem(tasks[taks_id]); 



}); 

回答

1

你只有一個localStorage的屬性,它是"tasks"

此屬性的值是你串接的json。

在行localStorage.removeItem(tasks[taks_id]);tasks[taks_id]的值不是"tasks"

因此,你正在尋找刪除localStorage的東西,根本不存在

你需要做的是從你tasks JavaScript數組刪除的項,然後保存修改後的數組再次localStorage的。

假設task_id是在陣列的索引:

//remove from array 
tasks.splice(task_id,1); 
//store again 
localStorage.setItem('tasks',JSON.stringify(tasks)); 
+0

未捕獲的ReferenceError:()task_elem.data(1)TASK_ID沒有定義ı具有當我點擊刪除按鈕 –

+0

tasks.splice此錯誤; localStorage.setItem('tasks',JSON.stringify(tasks));我使用這個代碼和繁榮!它的工作:)謝謝兄弟 –

相關問題