2016-08-05 2 views
0

Мне нужна помощь в создании cookie, который будет иметь множество разных значений. Пока у меня это есть.Добавление нескольких ключей и значений в файл cookie - Javascript

function makeCookie(key, value) { 
document.cookie= key + "=" + value + "; path=/";} 

//event listener to kick off the cookie function 
var style1button = document.getElementById('style1'); 
style1button.addEventListener('click',function() 
{makeCookie('style','style1')},false); 

//event listener to kick off the cookie function 
var style2button = document.getElementById('style2'); 
style2button.addEventListener('click',function(
{makeCookie('style','style2')},false); 

Я буду добавлять больше и я в конечном итоге нужно сделать печенье более одного стиля, но я не знаю, как пройти через множественный ключ, значения в одной и той же функции, у меня есть установка , Или это буквально делает новые имена вместо

makeCookie(key, value) 

я могу сделать

makeCookie(key1, value1, key2, value2......) 

Я прошу прощения, если это легко, я новичок в этом. Просмотрев информацию document.cookie с нескольких сайтов, я не могу найти ничего, что имеет смысл.

+1

Возможно, вам следует использовать 'localStorage', гораздо проще работать и хранить больше данных, чем файлы cookie https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API –

+0

вы можете написать любую функцию настройки cookie, которую вы хотите. но установка 'document.cookie' ЗАМЕНЯЕТСЬ все, что было ранее, поэтому вы не можете выполнить' doc.cook = 'a = b'; doc.cook = 'c = d''и иметь там + c, вы 'll только имеет 'c = d' –

+0

Я имею в виду, что у вас может быть функция очистить текущие файлы cookie с помощью' document.cookie = "" ', а затем сделать вашу текущую функцию addCookie и изменить' = 'на' + = '. – thedarklord47

ответ

0

Хотя я предлагаю переключиться на localStorage, если вы хотите поддержать переменные аргументы, я предлагаю вам переключить аргумент объекта { key: "foo", value: "bar" }, а затем использовать массив типа arguments объекта перебрать однако многие из них прошли:

// I usually put a comment showing an example of the argument(s) when 
// allowing a variable number of arguments 
function makeCookie(/* { key: "foo", value: "bar" }, { ... } */) { 
    for (var i = 0; i < arguments.length; i++) { 
     document.cookie= arguments[i].key + "=" + arguments[i].value + "; path=/"; 
    } 
} 

makeCookie({ key: "foo", value: "bar" }); 
makeCookie({ key: "style1", value: "styleValue" }, { key: "style2", value: "styleValue2" }); 
0

Я хотел бы предложить функцию для очистки куки (если вы хотите) и один для добавления печенья:

function clearCookies() { 
    document.cookie = ""; 
} 

function addCookie (key, value) { 
    document.cookie += key + "=" + value + "; path=/"; 
} 
0

Да, вы можете сделать это: makeCookie (key1, Valu e1, value2, value3 ......)

Функции в JS в основном имеют объект «arguments». Таким образом, для достижения указанных выше функций вашей функция makeCookie должна выглядеть, как показано ниже:

function makeCookie(){ 
    var key = arguments[0]; 
    var value; 
    for (var i = 1; i < arguments.length; i++) { 
     var tempValue = arguments[i]; 
     //write a logic here to represent the multiple values into one value   
    } 

    document.cookie= key + "=" + value + "; path=/"; 
} 

Примечания: Приведенный выше код предполагает, что вы всегда будете проходить ключ в качестве первого аргумента при вызове функции.

Смежные вопросы