【问题标题】:using .removeItem in localStorage在 localStorage 中使用 .removeItem
【发布时间】:2012-03-02 09:16:48
【问题描述】:

使用 jQuery 和 localStorage,我想记录玩家赢得比赛的次数。每次提交表单时,获胜次数或失败次数都会增加一,具体取决于获胜者。计数器工作正常,但由于某种原因,清除计数的功能不起作用。我一直在使用与 removeItem() 相同的函数和其他变量,它一直工作正常。

var nicwincount;
var niclosscount;


$('#dostuff').click(function(e) {

        e.preventDefault();
         if (playerName === 'nic' && tempresult === win) {
            nicwincount = JSON.parse(localStorage.getItem (nicwincount));
            nicwincount += 1;
            localStorage.setItem(nicwincount, JSON.stringify(nicwincount));
            console.log(localStorage.getItem(nicwincount));
            console.log(nicwincount);
            }
          else if (playerName === 'nic' && tempresult === loss) {
            losscount = JSON.parse(localStorage.getItem(niclosscount));
            losscount += 1;
            localStorage.setItem (niclosscount, losscount);
            console.log(localStorage.getItem(niclosscount));
            }
}

我尝试使用.setItem () 将计数设置为0。我也尝试使用.removeItem。无法让他们中的任何一个为我工作,也不知道为什么。

$('#clear').click(function(e){
        e.preventDefault();
     localStorage.setItem('nicwincount', 0);
            localStorage.setItem('niclosscount', 0);

    }

谢谢!

更新:

此代码使用 localStorage 工作

var nicScoreList = JSON.parse(localStorage.getItem('nicscorelist') || '[]');
    var niccount = 0;
    var nicTotalScore = nicScoreList.reduce(function(total, score) {
        if (score === " " || total === " ") {
            niccount++;
        }
        return +total + +score; 
    });

我从 localStorage 获取的项目在单独的页面上定义为:

scorelist = JSON.parse(localStorage.getItem(playerName + 'scorelist') || '[]');
        scorelist.push(" ");
        localStorage.setItem(playerName + 'scorelist', JSON.stringify(scorelist));
        $('div.scorecolumn', column).html("Score: <br>" + scorelist.join('<br>'));

我知道我跳过了一堆看起来的代码,所以如果这没有意义,请告诉我。

此代码有效,但原始示例仍未使用 nicwincount 和 niclosscount

【问题讨论】:

    标签: javascript jquery local-storage


    【解决方案1】:

    您正在使用变量来存储您的项目和字符串以清除它们。

    这里是裸词(即变量):

    localStorage.setItem(nicwincount, JSON.stringify(nicwincount));
    

    这里是字符串:

    localStorage.setItem('nicwincount', 0);
    

    【讨论】:

    • 没问题。有时很容易忽略显而易见的事情,尤其是在您自己的代码中。
    • 知道为什么当我使用 console.log(localStorage.getItem('nicwincount'));在另一个页面上它只是一直给我0?我有一种感觉,我搞砸了一些与字符串/变量相关的东西,但不确定
    • 页面是否在同一个域中?
    • 两者都在我电脑上的同一个文件夹中。只是在我的电脑上运行文件
    • 啊,本地存储上的 localStorage 存在问题,或者更确切地说是 file://。我以前在自己的代码中遇到过这个问题。请参阅:stackoverflow.com/questions/1492942 虽然,这应该已在 Firefox 中修复。我会在服务器上尝试一下,看看你是否有同样的问题。
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    相关资源
    最近更新 更多