首页 > HTML5本地存储用setItem为什么不能返回其value值?

HTML5本地存储用setItem为什么不能返回其value值?

如下若我把190数值加大,改成200, 会改变 localStorage.getItem(name)的值,可是item.beforescore不能及时返回

var obj = {};

obj.storage = {
    // var name= xxucGame.storage.get("lastname");
    // console.info( name );
    get: function(e){
        return localStorage.getItem(e)
    },
    set: function(key , value , isOverride){ //如果isOverride是true则强制重置
        key && (isOverride || this.get(key)===null ) && localStorage.setItem(key ,value);
    },
    remove: function(e){
        e && null !== this.get(e) && localStorage.removeItem(e);
    }
};

obj.set = function (name ,score,callback) {
    // body...
    var before = obj.storage.get(name);


    if (before !== null && before < score) { //当上次分数比当前小的时候
        obj.storage.set(name , score , true); //强制更新
    }else{
        obj.storage.set(name , score ,false);
    }

    var item = {
        score : score,
        beforescore : before
    };

    callback(item);
    console.log(item.score); //打印当前分数
    console.log(item.beforescore); //打印最高分数
    console.log(localStorage); //查看localStorage

}

obj.set('hello' , 180 , function(data){ //若我把180数值加大 会改变 localStorage.getItem(name)的值,可是item.beforescore) 不能及时返回
    console.info('更新成功' + data);
})

后来我加了一段代码

 var before = obj.storage.get(name);


    if (before !== null && before < score) { //当上次分数比当前小的时候
        obj.storage.set(name , score , true); //强制更新
    }else{
        obj.storage.set(name , score ,false);
    }

    before = obj.storage.get(name); //加在这里
    var item = {
        score : score,
        beforescore : before
    };

就可以成功同步了,我的理解是更新localStorage了,但是,变量before没能马上获取到,需要手动更新 我的理解正确么? 请大神为我解答下...谢谢!

问题已解决!

原来在第一次获取的时候都是上一次的值,下面更新了,但before根本无法捕捉到...

这几天连续敲代码 ,头脑 乱了,不好意思!!

【热门文章】
【热门文章】