2012-07-23 100 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; 
}