javascript - 如何批量删除HTML5本地存储?

标签 javascript html

我正在像下面这样动态创建本地存储

window.localStorage["DBname"+count]=JSON.stringify(values)

同时我也在创建一些其他的本地存储

window.localStorage["login_detail"]=login_string

window.localStorage["page_config"]=page_config

所以我不能使用 window.localStorage.clear(),因为它会清除我不需要的所有本地存储,而且我也不能使用 window.localStorage.removeItem[ "DBname"+count] 因为我知道执行时会有多少个"count"。

那么有什么方法可以像组删除一样删除本地存储吗?帮帮我。

最佳答案

简单的解决方案

var prefix = "DBname",
    continue = true, 
    on = 0;

while (continue) {

    continue = localStorage.getItem(prefix + on)?true:false;

    try { localStorage.removeItem(prefix + on);  } catch (e) { continue = false; }
    on += 1;
}

这将删除所有以 DBname 开头的本地存储项目

测试

开始:

  • 数据库名称1
  • DBblah
  • DBnameCats
  • 数据库名称 2
  • 数据库名称 3

结束:

  • DBblah
  • DBnameCats

更好的解决方案

var keys = Object.keys(localStorage),
    prefix = "DBname";
for (var i = 0; i < keys.length; i += 1) {
    if (keys[i].indexOf(prefix) === 0) {
        localStorage.removeItem(keys[i]);
    }
}

测试

开始:

  • 数据库名称1
  • DBblah
  • foobar
  • DBnameCats
  • 数据库名称 2
  • 数据库名称 3

结束:

  • DBblah
  • foobar

处理支持

添加这一行:

Object.keys||(Object.keys=function(r){var e=[];for(var n in r)r.hasOwnProperty(n)&&e.push(n);return e});

这将使您可以在几乎所有浏览器上使用更好的解决方案

关于javascript - 如何批量删除HTML5本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29887738/

相关文章:

javascript - 正则表达式提取 img src javascript

javascript - 在 JavaScript 中增加日期

css - 在一行中使用不同的 div 标签

html - Bootstrap 导航栏 Logo 高度和菜单分隔线

javascript - 从选择框中返回一个整数 - JavaScript

javascript - 如何使用nodegit获取当前分支名称?

javascript - 如何删除 AngularJS 中选择列表的第一个索引处出现的不需要的空项目?

html - CSS 子菜单错误 : ul#[class] -> position: absolute; No overlap or wrong menu width

javascript - 仅使用一次tinymce编辑器textarea

javascript - 绘制一系列球不起作用