2014-04-16 110 views

回答

5

不,但您可以在变量中保存想要的值,然后清除localStorage,然后再次将变量中存储的项目添加到变量中。

实施例:

var myItem = localStorage.getItem('key'); 
localStorage.clear(); 
localStorage.setItem('key',myItem); 
+0

这几乎是我打算做的,但想看看是否有一个普遍接受的方式,看起来就是这样! – OliverJ90

2

是。

for(var k in window.localStorage) { 
    if(k == "key1" || k == "key2") continue; 
    // use your preferred method there - maybe an array of keys to exclude? 

    delete window.localStorage[k]; 
} 
+0

我先看着这种方式;事实证明localStorage规范不包括for/in的枚举。较早版本的FireFox(至少)barf(http://stackoverflow.com/a/5410884/444991)。 – Matt

1

您可以手动执行此操作;

function clearLocalStorage(exclude) { 
    for (var i = 0; i < localStorage.length; i++){ 
     var key = localStorage.key(i); 

     if (exclude.indexOf(key) === -1) { 
      localStorage.removeItem(key); 
     } 
    } 
} 

请注意,我已经有意采取迭代的localStorage长度和检索匹配的密钥,而不是简单地使用for/in,作为for/inlocalStorage关键的是没有在规范中指定的长篇大论方式。旧版本的FireFox barf当你for/in。我不确定更新的版本(more info)。

exclude预计是您希望从中删除的键数组;

clearLocalStorage(["foo", "bar"]);