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



我正在使用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对存储中的空值的结果。

那么:只有当存储中没有任何内容时,我该如何设置默认值?

为什么要将值存储为字符串以将其转换回数字
尽管如此

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

使用这个问题作为参考来解决它:

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

比我最初的答案更清洁的解决方案:

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

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

最新更新