我正在使用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
对存储空值的结果。
那么:我如何仅在存储空间时设置默认值?
答案 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 + '');
}
使用存储的值(如果存在);如果没有,请设置默认值并存储它。