jQuery Storage:如果存储值为NaN,则设置默认值

时间:2012-07-23 18:32:52

标签: jquery local-storage default-value

我正在使用jQuery Storage来保存和恢复用户为音乐播放器设置的音量级别。每当他们拖动音量滑块时,我都会保存值...

this.setVolume = function(volume) {
    ...
    $.Storage.set('volume', volume + '');
    ...
};

然后我在下次加载页面时使用该值作为滑块的初始值...

$("#volumeslider").slider({
    ...
    value: volume,
    ...
});

保存和恢复部分工作正常。问题是,如果您是全新用户并且尚未调整音量滑块,则volume没有值。

所以我尝试使用try / catch块默认将音量设置为0.6,除非有一个保存的值要还原:

var volume = 0.6;
try {
    volume = parseFloat($.Storage.get('volume'));
} catch (e) { }

但相反,volume会以NaN的形式返回。然后我意识到没有“错误”可以捕获,因为NaN只是parseFloat对存储空值的结果。

那么:我如何仅在存储空间时设置默认值?

3 个答案:

答案 0 :(得分:3)

为什么要将值存储为字符串以将其转换回数字?
然而

$("#volumeslider").slider({
    value: parseFloat($.Storage.get("volume") || 0.6),
});

答案 1 :(得分:1)

使用this question作为参考解决了它:

if (!isNaN(parseFloat($.Storage.get('volume')))){
    var volume = parseFloat($.Storage.get('volume'));
} else {
    var volume = 0.6;
}

答案 2 :(得分:0)

比我原来的答案更清洁的解决方案:

var volume = parseFloat($.Storage.get('volume'));
if (!volume) {
    volume = 0.6;
    $.Storage.set('volume', volume + '');
}

使用存储的值(如果存在);如果没有,请设置默认值并存储它。