第一次海報,長時間的讀者。不保存尋寶遊戲的腳本
所以我需要創建一個快速簡單的尋寶。這些想法是將一些值存儲在cookie中,並且當用戶點擊具有匹配id的元素時,更新以下值。它還沒有在那裏,但是當這個人找到了全部8個(在這種情況下)它會觸發一些東西。
現在,我已經完成了大部分工作,但我遇到了一個大問題。 Cookie不是一頁一頁地存儲的。如果我正在關閉單個測試頁面,那就好了 - 創建cookie後,將值從中拉出並放入校驗數組,然後計數器正確遞增。此外,更新cookie時,新值將被正確存儲。
但是,當我轉到另一個頁面並檢查cookie時 - 它消失了。現在我查了一下,看看這個cookie是否真的掉進去了,是的,它在那裏。但是有多個cookie都有相同的名稱(它們正在更新值 - 但它只是頁面,因此沒有累積效果)。
所以,我想我不明白爲什麼當我調用cookie並重置它時,它不會影響單個cookie,而是創建一個新的cookie?
哦,我正在使用jQuery 1.4.2和jQuery 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 });
}
}
});
是否所有頁面在同一個域中? –