Javascript 未为寻宝脚本保存Cookie
第一次海报,长期读者 所以我需要创建一个快速而简单的寻宝程序。其思想是将一些值存储在cookie中,当用户单击具有匹配id的元素时,更新以下值。它还没有在那里,但是当这个人找到全部8个(在本例中)时,它会触发一些事情 现在,我已经让它大部分工作,但我遇到了一个大问题。cookie未被逐页存储。如果我只处理一个测试页面,那么就可以了——创建cookie,从中提取值并放入检查数组,计数器正确递增。此外,当cookie被更新时,新的值被很好地存储 然而,当我转到另一个页面检查cookie时,它就不见了。现在我检查了一下饼干是否真的被放进去了,是的,它就在那里。但是有多个cookie都具有相同的名称(它们正在更新值,但这只是一页一页的更新,所以没有累积效应) 所以,我想我不明白为什么当我调用cookie并重置它时,它不会影响单个cookie,而是创建一个新的cookie 哦,我正在使用jQuery1.4.2和jQuerycookie插件Javascript 未为寻宝脚本保存Cookie,javascript,jquery,cookies,Javascript,Jquery,Cookies,第一次海报,长期读者 所以我需要创建一个快速而简单的寻宝程序。其思想是将一些值存储在cookie中,当用户单击具有匹配id的元素时,更新以下值。它还没有在那里,但是当这个人找到全部8个(在本例中)时,它会触发一些事情 现在,我已经让它大部分工作,但我遇到了一个大问题。cookie未被逐页存储。如果我只处理一个测试页面,那么就可以了——创建cookie,从中提取值并放入检查数组,计数器正确递增。此外,当cookie被更新时,新的值被很好地存储 然而,当我转到另一个页面检查cookie时,它就不见了
// if not present create default array and store in cookie cookie
if($.cookie('treasure_hunt') == null) {
var treasure = new Array(
"arteContactEn",0,
"arteCorpEn",0,
"arteServicesEn",0,
"arteRoomsEn",0,
"arteDiningEn",0,
"artePackEn",0,
"arteHotelEn",0,
"arteHomeEn", 0
)
$.cookie('treasure_hunt', treasure, { expires: 7 });
}
// capture cookie info
var treasureFound = $.cookie('treasure_hunt');
// create check array and parse values into it
var treasureCheck = new Array();
var treasureCheck = treasureFound.split(',');
// function checks array and tallies total found items
function checkFound() {
var foundItems = 0;
for(var i=0; i<treasureCheck.length; i++) {
var value = treasureCheck[i];
if(value == 1) {
++foundItems;
}
}
// writes found items to span on page
$('.thProgress').text(foundItems);
}
// check number artefacts and write to page
var treasureTotal = treasureCheck.length / 2;
$('.thTotal').text(treasureTotal);
// on click checks element id against array and, if found, marks the following value as 1
$('.artefact-right, .artefact-left').click(function(){
var artefactID = $(this).attr('id');
for(var e=0; e<treasureCheck.length; e++) {
var matchID = treasureCheck[e];
var k = e + 1;
if(matchID == artefactID) {
treasureCheck[k] = 1;
// checks for total found items
checkFound();
// updates cookie with new array
$.cookie('treasure_hunt', treasureCheck, { expires: 7 });
}
}
});
//如果不存在,则创建默认数组并存储在cookie中
if($.cookie('寻宝')==null){
var=newarray(
“阿尔泰接触”,0,
“arteCorpEn”,0,
“arteServicesEn”,0,
“arteRoomsEn”,0,
“arteDiningEn”,0,
“artePackEn”,0,
“阿泰伦酒店”,0,
“阿泰荷门”,0
)
$.cookie('寻宝',宝藏,{expires:7});
}
//捕获cookie信息
var FUNDED=$.cookie(“寻宝”);
//创建检查数组并将值解析到其中
var=newarray();
var-treasureCheck=treasureFound.split(',');
//函数检查数组并计算找到的项目总数
函数checkFound(){
var foundItems=0;
对于(var i=0;i根据,如果不希望cookie仅用于创建它的页面,则需要定义cookie的有效路径:
定义cookie有效的路径。默认情况下
cookie是创建cookie的页面的路径(标准)
浏览器行为)。如果您想使其可用,例如
在整个页面上使用路径:“/”。如果要删除cookie
对于特定路径,您需要在调用中包含该路径
所以我想应该是这样的:
$.cookie('treasure_hunt', treasure, { expires: 7, path: '/' });
另外,您的var treasure=new Array()
声明末尾缺少了一个分号。所有页面都在同一个域中吗?效果很好。感谢您的快速回复。:)谢谢您这么快回复我!这太不可思议了-我去拿了一碗汤,然后砰!问题解决了。