0

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

那么:我将如何仅在存储中没有任何内容时设置默认值?

4

3 回答 3

3

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

$("#volumeslider").slider({
    value: parseFloat($.Storage.get("volume") || 0.6),
});
于 2012-07-23T18:36:06.923 回答
1

使用此问题作为参考解决了它:

if (!isNaN(parseFloat($.Storage.get('volume')))){
    var volume = parseFloat($.Storage.get('volume'));
} else {
    var volume = 0.6;
}
于 2012-07-23T19:15:51.263 回答
0

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

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

如果存在,则使用存储值;如果没有,请设置一个默认值并存储它。

于 2013-01-22T17:27:07.167 回答