Файлы cookie удаляются, если для них установлено время «истекает» в прошлом.
Однако в этом коде я не вижу ничего, что пытается удалить куки. Вы, кажется, пытаетесь удалить часть строки, которая установлена как cookie. (Насколько я могу судить из кода, который из-за сумасшедшего отступа совсем не так легко прочитать.)
if (books[i].delid === delid) {
books_saved.slice(delid)
}
Нет такой переменной, как «books_saved». Вы должны были получить ошибку JavaScript для этого. Убедитесь, что у вас есть отчеты об ошибках / консоль ошибок, поскольку без ошибок вы будете снимать в темноте.
Предположительно, вы имели в виду массив 'books', но это просто строки, а не объекты с delid
.
.slice
возвращает часть массива как новый массив. Это не меняет массив. Если вы хотите удалить элемент из массива, который вы хотите splice
, но не имеет никакого смысла передавать ему delid. Может быть, вы имели в виду:
for (var i= books.length; i-->0;)
if (books[i]===delid)
books_saved.splice(i, 1);
Это удалит данный элемент из массива, но это все равно не изменит cookie, вам придется снова вызывать $.cookie
, как в функции savebook.