Travor_LZH 2016-02-21 00:50 采纳率: 100%
浏览 2459
已采纳

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)却可以

  • 写回答

3条回答

  • Go 旅城通票 2016-02-21 04:14
    关注

    直接移除就行了,干嘛要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;
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?