问题描述
- 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