我将图片保存为'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 });
});
});
答案 0 :(得分:0)
你在这一行有一两个错误:
if (rightnow=='NaN') { rightnow=1;}
考虑没有设置cookie的初始情况。变量rightnow将为null,因为$ .cookie(" mycookieismine");返回null。
null不等于NaN ,所以当你向它添加一个时,它就变成了NaN。
将您的if语句更改为:
if (!rightnow) { rightnow=1;}
这是有效的,因为null在JavaScript中是假的。
这条线实际上还有一个问题:
if (rightnow=='NaN') { rightnow=1;}
让我们假设你实际上将NaN存储到cookie中。 jQuery cookies插件神奇地变成了字符串' NaN'保存在cookie中的NaN实际值。所以当你比较字符串' NaN'对于值NaN,它将评估为false。看看这个小提琴在控制台中打印出来以便自己查看:http://jsfiddle.net/6VMqb/