Найти cookie по ключу
Есть массив kWords = ['hello',2,'flour',5,'work',7,'set',9,11,12,14];
В первой итерации скрипта записываю cookie со значением индекса переменной массива (после завершения скрипта):
document.cookie = `nameCoo=${num}`;
Во второй итерации пытаюсь найти значение по ключу, чтобы изменить индекс переменной массива и присвоить переменной следующее значение массива, но не могу вытащить значение.
function getCookie(nameCoo) {
let matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
if(btnSerh != null && num == getCookie(nameCoo)) {
num = num + 1;
}
let kWord=kWords[num];
Как перезаписать переменную num ?
Ответы (1 шт):
Попробуйте так:
function getCookie(name) {
let match = document.cookie
.split('; ')
.find(row => row.startsWith(`${name}=`));
return match ? match.split('=')[1] : undefined;
}
function setCookie(name, value) {
document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
}
getCookie('nameCoo'); // undefined
setCookie('nameCoo', 1); // nameCoo=1
setCookie('nameCoo', 2); // nameCoo=2
getCookie('nameCoo'); // 2
Стоит отметить:
Мы можем писать в document.cookie. Но это не просто данные, а акcессор (геттер/сеттер). Присваивание обрабатывается особым образом. Запись в document.cookie обновит только упомянутые в ней куки, но при этом не затронет все остальные. https://learn.javascript.ru/cookie