此代码中包含:
$('#doneItem').click(function(){
$(this).each(function(index){
var item = 'personal' + index;
alert(item);
localStorage.removeItem('personal' + index);
window.location.reload(true);
});
});
#doneItem是一个按钮,我想删除前面的'personal0'。来自localStorage和... Uncaght TypeError:无法调用未定义的方法'removeItem'。任何想法??
答案 0 :(得分:1)
在尝试删除项目之前,您是否可以检查该项目是否在localStorage中?
if (item in localStorage) localStorage.removeItem(item);
我假设您已检查浏览器是否使用localStorage?
修改强>
您可以尝试使用动态ID。这将匹配以a
开头的所有doneItem
元素,然后获取index
变量末尾的数字。
$("a[id^=doneItem]").click(function(){
var index = $(this).attr("id").replace("doneItem", "");
var item = 'personal' + index;
localStorage.removeItem(item);
window.location.reload(true);
});
您还需要更改此行并在其中插入i
:
document.write("<a data-role=\"button\" id=\"doneItem" + i + "\" data-transition=\"none\" href=\"#showPersonal\" data-icon=\"check\" data-iconpos=\"left\">Done</a>");
这只有在您注释掉Modernizr代码时才有效。你在这里替换了localstorage变量,我不知道你为什么这样做。
/*
if (Modernizr.localstorage) {
var localStorage = window.storage;
} else {
alert('Your browser does not support local storage!');
}
*/
这些问题可能只有 jsfiddle ,所以我不得不删除更多代码,但这是一个有点有用的例子:http://jsfiddle.net/zr4tg/53/
它可能看起来不像你想要但它应该正常工作。让我知道=)