0

我将图像保存为“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 }); 
      });
    });
4

1 回答 1

0

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

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

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

null 不等于 NaN,因此当您向其添加 1 时立即变为 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/

于 2013-07-12T02:06:12.810 回答