【问题标题】:Continue with 'next' image using cookies使用 cookie 继续“下一张”图片
【发布时间】:2013-07-11 18:38:05
【问题描述】:

我将图像保存为“image_1.jpg”、“image_2.jpg”等。 单击“下一步”按钮时,将加载新图像。变量名称“rightnow”用于增加数字并更改 img src attr 中的 URL。我正在尝试将此变量的值存储在 cookie 中,以便即使在使用新会话时它也能继续加载下一个图像。

我检查了浏览器中的 cookie 值,它设置得很好。但是,当我实际使用新会话时,似乎使用值 '1' 作为变量 'rightnow' 并显示第一张图像。我的代码有什么问题? (使用jQuery Cookie插件v1.3.1)

    $(document).ready(function(){
var highone=9; 
var rightnow=$.cookie("mycookieismine");
if (rightnow=='NaN') { rightnow=1;} 
      $("#next-img").click(function(){
        rightnow=rightnow+1; if (rightnow>highone) {rightnow=1;}; 
        $(".imga-class").attr('src',"http://example.com/images/image_"+rightnow+".jpg");
        startTime = new Date().getTime();
        var date = new Date();
        var minutes = 10;
        date.setTime(date.getTime() + (minutes * 60 * 1000));
        $.cookie("mycookieismine",rightnow, { expires: date }); 
      });
    });

【问题讨论】:

    标签: javascript jquery jquery-cookie


    【解决方案1】:

    您在这一行有一个(或两个)错误:

    if (rightnow=='NaN') { rightnow=1;} 
    

    考虑没有设置 cookie 的初始情况。现在的变量将为空,因为 $.cookie("mycookieismine");返回 null。

    null 不等于 NaN,所以当你给它加一时,它现在变成了 NaN。

    将您的 if 语句更改为:

    if (!rightnow) { rightnow=1;} 
    

    这是可行的,因为 null 在 JavaScript 中是虚假的。

    这一行实际上还有一个问题:

    if (rightnow=='NaN') { rightnow=1;} 
    

    假设您实际上将 NaN 存储到 cookie 中。 jQuery cookie 插件神奇地将 cookie 中保存的字符串 'NaN' 转换为实际值 NaN。因此,当您将字符串“NaN”与值 NaN 进行比较时,它将评估为 false。看看这个小提琴在控制台中打印了什么,你自己看看:http://jsfiddle.net/6VMqb/

    【讨论】:

    • 谢谢,我已经做出改变了。但我仍然看到它以新会话的值“1”开头。我在“click”函数中拉入全局变量“rightnow”值是否正确?
    • rightnow 的范围看起来是正确的。尝试完全清除 cookie 以消除不良状态。并在您第一次读取 cookie 值后粘贴 console.log(rightnow); 并检查控制台以查看它正在读取的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多