jQuery html5 localStorage removeItem错误

时间:2012-03-29 06:08:03

标签: jquery html5 local-storage

此代码中包含:

$('#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'。任何想法??

1 个答案:

答案 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/

它可能看起来不像你想要但它应该正常工作。让我知道=)