向cookie添加多个键和值 - Javascript

时间:2016-08-05 17:44:39

标签: javascript cookies

我需要帮助制作一个具有很多不同价值的cookie。到目前为止,我有这个。

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);

我将要添加更多内容,我最终需要制作一个多一个样式的cookie,但我不确定如何将多个键值传递到我设置的相同功能中。或者它实际上只是组成新名称而不是

makeCookie(key, value)

我可以吗

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

如果这很容易我道歉,我是新来的。在查看来自多个站点的document.cookie信息后,我无法找到任何有意义的信息。

3 个答案:

答案 0 :(得分: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" });

答案 1 :(得分:0)

我建议使用清除cookie的功能(如果需要)和添加cookie的功能:

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

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

答案 2 :(得分:0)

是的,你可以这样做: makeCookie(key1,value1,value2,value3 ......)

JS中的函数基本上都有“参数”对象。因此,要实现上述功能,您的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=/";
}

注意:上面的代码假定您在调用函数时始终将key作为第一个参数传递。