2012-07-23 86 views
0

我正在使用jQuery Storage来为音乐播放器保存和恢复用户设置的音量级别。每当他们拖动音量滑块,我保存的价值...jQuery Storage:如果存储值为NaN,则设置默认值

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

比我原来的回答简洁的解决方案:

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

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

3

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

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

根据文档,“名称和值应该是字符串,一些浏览器可能接受非字符串值,但不是全部。” – daGUY 2012-07-23 18:43:29

+0

@daGUY我必须承认,我没有阅读文档...没关系我问:) – Andreas 2012-07-23 18:50:08

1

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

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