Прежде всего, позвольте мне предсказать этот вопрос, сказав, что мой профессор твердо укоренился в прошлом.Наше последнее задание потребовало, чтобы мы поместили ссылки поверх картинок.
Вы также можете сказать, что он безумен, поскольку для тестирования наших страниц он требует, чтобы все функции (включая файлы cookie) были реализованы с помощью "технологии на стороне клиента".т.е. не на сервере.Он использует Firefox для тестирования страниц, поэтому единственное благословение в том, что он не заботится о совместимости между браузерами.
При этом у меня проблема с нашим последним заданием.Мы создаем систему «корзины покупок» с использованием Javascript и файлов cookie для хранения покупаемых товаров.Это нормально, за исключением того, что по какой-то причине в моей функции, которая добавляет новый элемент cookie, назначение чего-то для document.cookie не работает.
Вы можете найти весь мой сайт здесь .zip file download (если есть что-то, что вас интересует, «с какой стати вы это делаете? Это безумие!» - это либо прямое задание, либо способ попытаться свести к минимумуболь.)
Это мой код, который должен изменить cookie:
var mycookies = new function (){
var cookies = document.cookie.split(';');
var cookie, values;
this.items = [];
for(var x = 0; x < cookies.length; x++){
if(cookies[x] != ""){
cookie = cookies[x].split('=')[0].trim()
values = cookies[x].split('=')[1]
values = values.split(',');
if(!this.items[cookie]){
this.items.push(cookie);
this[cookie] = new function(){};
}
this[cookie].size = values[0];
this[cookie].qty = parseInt(values[1]);
}
}
this.render = function(){
var values, cookies = "", cookie;
for(var x = 0; x < this.items.length; x++){
cookie = this.items[x];
values = [this[cookie].size, this[cookie].qty].join(',');
cookies += cookie + "=" + values + '; ';
}
return cookies;
}
this.clear = function(){
for(var x = 0; x < this.items.length; x++){
delete this[this.items[x]];
}
this.items = [];
document.cookie['expires'] = '26 Aug 1984 01:01:01 UTC;';
}
this.additem = function(){
var i = document.forms[0].size.selectedIndex;
if (this.items[page]){
this[page].size = document.getElementById('size').value;
this[page].qty = document.getElementById('qty').value;
}
else{
this.items.push(page);
this[page] = new function(){};
this[page].size = document.getElementById('size').value;
this[page].qty = document.getElementById('qty').value;
}
console.log(this.render()); // For use with firebug
document.cookie = this.render();
console.log(document.cookie); // For use with firebug
}
}
Когда я запускаю это, firebug выдает следующее:
expires=12 Aug 2001 01:01:01 UTC,NaN; whitec=Small,3;
expires=12 Aug 2001 01:01:01 UTC,NaN
Теперь я ожидаю, что 1) срок действия моего cookie истек (я установил срок действия через firebug, мой разбор добавил NaN позже, - но там он остался), и 2) значение для файла cookie будет изменено нарезультат this.render()
Помимо очевидного факта, что поведение cookie на стороне клиента не гарантируется спецификацией w3, я что-то здесь упускаю?( РЕДАКТИРОВАТЬ - я имею в виду, когда страница находится на стороне клиента, открывается как файл, а не обслуживается сервером) Это действительно отягчает - я пробовал множество разных углов, и нет "javascript cookie «поиск или« изменение cookie javascript »приводит меня ко всему полезному.Любые предложения о том, как я могу это исправить?
Или я должен просто написать своему профессору ссылку на спецификации w3 и сказать ему, что требовать от нас поддержки файлов cookie на стороне клиента глупо?