我正在使用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 + '');
}
使用存储的值(如果存在);如果没有,请设置一个默认值并将其存储。