первый постер, долгое время читатель.
Так что мне нужно было создать быструю и простую охоту за сокровищами. Идея заключалась в том, чтобы сохранить некоторые значения в файле cookie и, когда пользователь щелкнет элемент с соответствующим идентификатором, обновить следующее значение. Это еще не там, но когда человек нашел все 8 (в данном случае), это вызовет что-то.
Теперь я понял, что это в основном работает, но я столкнулся с большой проблемой. Файл cookie не сохраняется от страницы к странице. Если я работаю с одной тестовой страницей, это нормально - файл cookie создается, значения извлекаются из него и помещаются в проверочный массив, а счетчик увеличивается правильно. Кроме того, когда файл cookie обновляется, новые значения сохраняются просто отлично.
Тем не менее, когда я перехожу на другую страницу и проверяю, нет ли файла cookie - он исчез. Теперь я проверил, действительно ли файл cookie был добавлен, и да, он есть. Но есть несколько файлов cookie с одним и тем же именем (они обновляют значения, но опять-таки, это только страница на страницу, поэтому нет кумулятивного эффекта).
Итак, я не понимаю, почему, когда я вызываю cookie и сбрасываю его, он не влияет на один cookie, а создает новый?
О, я использую jQuery 1.4.2 и плагин cookie jQuery.
// 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 });
}
}
});