2011-09-29 21 views
20

Tôi có 2 ứng dụng làm việc cùng với localstorage và tôi tự hỏi làm thế nào tôi có thể xóa tất cả các khóa bắt đầu bằng ghi chú- và todo-. Tôi biết localstorage.clear() xóa tất cả mọi thứ nhưng đó không phải là mục tiêu của tôi.HTML5 Localstorage & jQuery: Xóa các khóa cục bộ bắt đầu bằng một từ nhất định

Dưới đây là một ví dụ về những gì tôi có trong localStorage tôi: enter image description here

Nơi tôi muốn xóa tất cả các todo- * với một nút bấm và tất cả Lưu ý- * với nút khác bấm sử dụng jquery.

Thanks a lot

+1

http://stackoverflow.com/questions/3138564/looping-through-localstorage-in-html5-and-javascript –

Trả lời

40
Object.keys(localStorage) 
     .forEach(function(key){ 
      if (/^todo-|^note-/.test(key)) { 
       localStorage.removeItem(key); 
      } 
     }); 
+0

nó dường như xóa của todo-only? Weird – jQuerybeast

+2

RegEx phải là '/^(?: todo- | note -) /'. Các '?:' Sẽ làm cho nó một nhóm không bắt mà sẽ tăng tốc độ lên một chút. '/^todo- |^note- /' cũng nên hoạt động mà không có bất kỳ nhóm nào cả. –

+0

Nó dường như không phải là vấn đề. Tôi nghĩ rằng vấn đề là trong các mã hóa của ứng dụng đó bởi vì tôi đã cố gắng để xóa các giá trị thông qua firebug và khi tôi làm mới tôi nhận được nó giá trị trở lại. – jQuerybeast

9

tôi đã sử dụng một phương pháp tương tự để @Ghostoy, nhưng tôi muốn để nuôi trong một tham số, kể từ khi tôi gọi đây là từ một số nơi trong mã của tôi. Tôi đã không thể sử dụng tên tham số của tôi trong một biểu thức chính quy, vì vậy tôi chỉ sử dụng chuỗi con thay thế.

function ClearSomeLocalStorage(startsWith) { 
    var myLength = startsWith.length; 

    Object.keys(localStorage) 
     .forEach(function(key){ 
      if (key.substring(0,myLength) == startsWith) { 
       localStorage.removeItem(key); 
      } 
     }); 
} 
Các vấn đề liên quan