数据库-Web Storage 为什么用不了removeItem函数

问题描述

Web Storage 为什么用不了removeItem函数

我已经编写好了这样一串代码

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script type="text/javascript">
var pgCt = window.localStorage.getItem("pageCount");
/*在sessionStorage中定义数据*/
window.sessionStorage.setItem("myFirstKeyInSessionStorage","valueA");
window.sessionStorage.setItem("peter","dog");
window.sessionStorage.setItem("bill","boy");
window.sessionStorage.setItem("lily","girl");
/*在localStorage中定义数据*/
window.localStorage.setItem("myFirstKeyInLocalStorage","valueA");
window.localStorage.setItem("hitler","a bad guy");
window.localStorage.setItem("washington","a good guy");
window.localStorage.setItem("bob","a friend");
/*检测浏览器是否支持Web Storage*/
function checkStorageSupport(){
    if(window.sessionStorage){
        alert("浏览器支持window.sessionStorage");
    }else{
        alert("浏览器不支持window.sessionStorage");
    }
    if(window.localStorage){
        alert("浏览器支持window.localStorage");
    }else{
        alert("浏览器不支持window.localStorage");
    }
    if(!window.sessionStorage||window.localStorage){
        alert("看来这个网页你没法使用了!换个浏览器吧!n比如chrome");
    }
    return 0;
}
/*其它钩子函数*/
function findItemSessionStorage(){
    var key=prompt("请输入数据项","");
    var value=window.sessionStorage.getItem(key);
    alert(key+"的值为"+value);
    return 0;
}

function findItemLocalStorage(){
    var key=prompt("请输入数据项","");
    var value=window.localStorage.getItem(key);
    alert(key+"的值为"+value);
    return 0;
}

function setItemSessionStorage(){
    var key=prompt("请输入要添加或设置的数据项","");
    var value=prompt("请输入"+key+"的值","");
    window.sessionStorage.setItem(key,value);
    alert("操作成功");
    return 0;
}

function setItemLocalStorage(){
    var key=prompt("请输入要添加或设置的数据项","");
    var value=prompt("请输入"+key+"的值","");
    window.localStorage.setItem(key,value);
    alert("操作成功");
    return 0;
}
/*该区块不可用*/
function removeItemSessionStorage(){
    var key=prompt("请输入要移除的数据项","");
    eval("window.sessionStorage.removeItem("+key+");");
    alert("成功移除"+key);
    return 0;
}

function removeItemLocalStorage(){
    var key=prompt("请输入要移除的数据项","");
    eval("window.localStorage.removeItem("+key+");");
    alert("成功移除"+key);
    return 0;
}

function getLoc(){
    var a=window.location.toString()
    alert(a);
}

function onload(){
    if(pgCt!=null&&pgCt!=undefined){
        pgCt++;
    }else{
        pgCt=1;
    }
    window.localStorage.pageCount=pgCt;
    var obj = document.getElementById("lb1");
    obj.innerHTML=pgCt;
}
</script>
<title>数据库</title>
</head>

<body onload="onload();">
<font id="Sz" size="+0">
<form name="test">
<p>测试</p>
<button name="storageSupportChecker" onclick="checkStorageSupport()">测试是否存在sessionStorage和localStorage</button>
</form>
<form name="getItems">
<p>获取数据</p>
<button name="getItemSS" onclick="findItemSessionStorage()">在sessionStorage中获取数据</button>
<button name="getItemLS" onclick="findItemLocalStorage()">在localStorage中获取数据</button>
</form>
<form name="setItems">
<p>设置数据和添加数据</p>
<button name="setItemSS" onclick="setItemSessionStorage()">在sessionStorage中设置和添加数据</button>
<button name="setItemLS" onclick="setItemLocalStorage()">在localStorage中设置和添加数据</button>
</form>
<!--以下控件正在开发-->
<form name="removeItems">
<p>移除数据</p>
<button name="removeItemSS" onclick="removeItemSessionStorage()">在sessionStorage中移除数据</button>
<button name="removeItemLS" onclick="removeItemLocalStorage()">在localStorage中移除数据</button>
</form>
<form name="other">
<p>杂项</p>
<button name="getLocation" onclick="getLoc()">查看该网页链接</button>
</form>
<form name="testform">
访问次数:<label id="lb1"/>
</form>
</font>
</body>
</html>

显示的页面是这样的:

但是为什么removeItem函数在网页中用不了
但是在chrome的控制台中执行window.sessionStorage.removeItem(key)或window.localStorage.removeItem(key)却可以

解决方案

CSDN真辣鸡,上面的答案也是我的,字体加粗之后乱码了。
removeItemLocalStorage()里的eval改成这样:

eval("window.localStorage.removeItem('"+key+"');")
key穿进去后直接是 value,而非 'value' (一个是字符串,一个是字符串对象)。

解决方案二:

直接移除就行了,干嘛要eval。。eval你的key要用引号括起,要不就是传递变量(输入值为字母)或者数字的。

       /*该区块不可用*/
        function removeItemSessionStorage() {
            var key = prompt("请输入要移除的数据项", "");
            window.sessionStorage.removeItem(key);
            //eval("window.sessionStorage.removeItem(" + key + ");");
            alert("成功移除" + key);
            return 0;
        }

        function removeItemLocalStorage() {
            var key = prompt("请输入要移除的数据项", "");
            window.localStorage.removeItem(key);
            //eval("window.localStorage.removeItem(" + key + ");");
            alert("成功移除" + key);
            return 0;
        }

解决方案三:

函数 removeItemLocalStorage()里面的eval改成这样:
** eval("window.localStorage.removeItem('"+key+"');");**

key穿进去后直接是 value,而非 'value' (一个是字符串,一个是字符串对象)。

时间: 2024-11-03 21:41:58

数据库-Web Storage 为什么用不了removeItem函数的相关文章

HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)

1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息.   但是cookie有下面几个问题: a:大小:cookies的大小被限制在4KB b:带宽:cookies随HTTP事务一起被发送,因此会浪费一部分发送的cookies时使用的带宽. c:复杂性:要正确的操纵cookies是很困难的.   Web Storage分为两种: <1>sessionStorag

H5本地储存Web Storage

   一.本地存储由来的背景 由于HTML4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是Cookie的这些限制,也就导致了Cookie只能存储一些ID之类的标识符等简单的数据. 下面是Cookie的限制: 大多数浏览器支持最大为 4096 字节的 Cookie. 浏览器还限制站点可以在用户计算机上存储的 Cookie 的数量.大多数浏览器只允许每个站点存储 20 个Cookie;如果试图存储更多 Cookie,则最

HTML5 Web Storage

简介 HTML5 web storage, better than cookies. more secure and faster data store in name/value pairs the storage limit is at least 5MB     1. 发展过程:       2. 浏览器支持情况:       3. HTML5 Web Storage 提供如下两种对象: window.localStorage - stores data with no expiratio

【HTML5】Web Storage简析

什么是Web Storage? web storage是HTML5规范中提出的一种本地存储解决方案.在这之前,我们在开发中遇到本地存储问题时,通常有两种解决方式 cookie:兼容性最好,但也有不少问题,下面会简单做下对比 各浏览器实现的非标准化的本地存储方案,如IE的userData,firefox的global storage等,毫无疑问,最大的问题是兼容性 session storage.local storage的区别 session storage的作用在于:将数据存储在本地,只有当次

如何创建数据库Web Services

services|web|创建|数据|数据库 XML Web Services一个最显然的用处就是通用数据存取.通过它,你可以把公司的数据库被Internet上的许多客户端来访问,也可以动态地把它导入到第三方的Web站点上,甚至可以允许你的商业伙伴的Web Services去查询.下面就解释一下如何创建一个简单的Web Services,把你的数据库内容显示到Internet Explorer.第三方的Web Services和自定义的C#和VB.NET的客户端. 合作伙伴.客户.雇员在使用为多

页面相关的数据存储(缓存及Web Storage)

页面可用的缓存包括:Http Cache, Local Storage, Session Storage以及Application Cache. 它们都可以用来减少请求数量,以提高页面的性能及减少流量消耗,这对于移动端的浏览器来说更为重要 (另外还有Memory Cache, 不过对于前端工程而言是透明的). Http Cache 最为常用的缓存机制.相对后三项属于浏览器内核内的模块(也是H5中定义的标准),Http Cache早已存在于HTTP模块中了.它是网络层对HTTP协议实现中一部分.它

函数调用-新人求助 vb.net+access数据库编写电话簿,调用添加和删除函数,调试都卡住了。

问题描述 新人求助 vb.net+access数据库编写电话簿,调用添加和删除函数,调试都卡住了. 添加函数: '写一个添加用户信息的方法,它的返回值是布尔型, Function AddUser(ByVal User As DBuser) As Boolean '首先判断用户名是否已经存在 Dim SQLString As String SQLString = "SELECT * FROM telephonebook WHERE 姓名 ='" & nm & "

数据库web方式登录:test.nsf/tmpform?openform&amp;amp;amp;login&amp;amp;amp;username=admin&amp;amp;amp;password=123456789

问题描述 domino上一个nsf数据库,web登录,需要提供用户名.密码方可访问,现领导要求:通过单位统一平台登录的,就直接显示内容(其他地方还是需要权限控制).我想,建立一个连接,指教把用户名和密码放在后面,在网上查了说用test.nsf/tmpform?openform&login&username=admin&password=123456789格式访问,但是,我在服务器上测试不行啊.是不是格式不对呢.还有人说可以用http://username:password@serv

一个修改web.config中appSettings配置节的函数

web|函数 这个函数主要使用XmlDocument来解析web.config.并用SelectSingleNode()方法来定位要修改的配置节.要注意的是最后程序要Save(),所以,你的apsnet帐号必须对web.config拥有写权限. -------------------------------------------------------------------------------- /// <summary> /// 修改web.config文件appSettings配置