【问题标题】:jQuery Storage: set default value if stored value is NaNjQuery Storage:如果存储值为 NaN,则设置默认值
【发布时间】:2012-07-22 00:47:44
【问题描述】:

我正在使用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) { }

但是,volumeNaN 的形式返回。然后我意识到没有“错误”可以捕获,因为NaN 只是parseFloat 对存储中的空值的结果。

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

【问题讨论】:

    标签: jquery local-storage default-value


    【解决方案1】:

    为什么要将值存储为字符串以将其转换回数字?
    不过

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

    【讨论】:

    • 根据文档,“名称和值应该是字符串。一些浏览器可能接受非字符串值,但并非所有浏览器都接受。”
    • @daGUY 我必须承认我还没有阅读文档...别介意我问:)
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      比我原来的答案更干净的解决方案:

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

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

      【讨论】:

        猜你喜欢
        • 2017-12-05
        • 2013-04-12
        • 1970-01-01
        • 2013-09-10
        • 2016-01-02
        • 2013-03-23
        • 1970-01-01
        • 2016-09-01
        • 2022-06-19
        相关资源
        最近更新 更多