2011-09-29 11 views
20

Ho due app che funzionano insieme a localstorage e mi chiedevo come eliminare tutti i tasti che iniziano con note- e todo-. So che localstorage.clear() cancella tutto ma questo non è il mio obiettivo.HTML5 Localstorage & jQuery: Elimina chiavi di memorizzazione locale che iniziano con una determinata parola

Ecco un esempio di quello che ho nella mia localStorage: enter image description here

dove voglio eliminare tutti i todo- * con un clic del pulsante e tutto nota- * con altro pulsante clic utilizzando jQuery.

Grazie mille

+1

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

risposta

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

sembra per eliminare il todo-del solo? Weird – jQuerybeast

+2

RegEx dovrebbe essere '/^(?: todo- | note -) /'. Il '?:' Lo renderà un gruppo non catturante che velocizzerà un po 'le cose. '/^todo- |^note- /' dovrebbe funzionare anche senza alcun raggruppamento. –

+0

Non sembra essere questo il problema. Penso che il problema sia nella codifica di quell'app perché ho cercato di eliminare il valore tramite firebug e quando lo aggiorno ne ottengo il valore. – jQuerybeast

9

ho usato un metodo simile a @Ghostoy, ma ho voluto alimentare in un parametro, dal momento che io chiamo questo da diversi luoghi nel mio codice. Non ero in grado di usare il mio nome parametro in un'espressione regolare, quindi ho usato solo la sottostringa.

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

    Object.keys(localStorage) 
     .forEach(function(key){ 
      if (key.substring(0,myLength) == startsWith) { 
       localStorage.removeItem(key); 
      } 
     }); 
} 
Problemi correlati