2016-08-05 6 views
0

Ich brauche Hilfe bei der Erstellung eines Cookies, das viele verschiedene Werte haben wird. Bisher habe ich das.Mehrere Schlüssel und Werte zum Cookie hinzufügen - 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); 

ich Zugabe in mehr sein werde, und ich werde am Ende brauchen, um ein Cookie mehr machen dann einen Stil, aber ich bin nicht sicher, wie durch mehrere Schlüssel zu übergeben, Werte in die gleiche Funktion I Setup . Oder ist es buchstäblich nur neue Namen bilden statt

makeCookie(key, value) 

kann ich

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

ich entschuldige mich, wenn diese einfach, ich bin hier. Nachdem ich die document.cookie-Informationen von mehreren Seiten betrachtet habe, kann ich nichts finden, was sinnvoll ist.

+1

Vielleicht sollten Sie stattdessen 'localStorage' verwenden, es ist viel einfacher zu arbeiten und kann mehr Daten speichern als Cookies https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API –

+0

Sie können jede gewünschte Cookie-Einstellungsfunktion schreiben. aber das Setzen von 'document.cookie' ERSETZT was auch immer da war, also kannst du 'doc.cook =' a = b '; doc.cook =' c = d'' nicht machen und hast ein + c drin Ich habe nur 'c = d' –

+0

Ich meine, Sie könnten eine Funktion löschen aktuelle Cookies mit' document.cookie = "" 'dann machen Sie Ihre aktuelle Funktion addCookie und ändern Sie die' = 'nach' + = '. – thedarklord47

Antwort

0

Obwohl ich zu localStorage Schalt schlagen, wenn Sie variable Argumente unterstützen möchten, empfehle ich Ihnen Ihr Argument wechseln auf ein Objekt { key: "foo", value: "bar" } und dann verwenden, um die Array-artiges arguments Objekt jedoch viele iterieren übergeben:

// 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

ich würde eine Funktion vorschlagen für die Cookies zu löschen (wenn Sie möchten) und eine für das Hinzufügen von Cookies:

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

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

Ja, Sie können dies tun: makeCookie (key1, valu e1, value2, value3 ......)

Funktionen in JS haben grundsätzlich "Argumente" -Objekt. Also, um zu erreichen, um die obigen Merkmal Ihre makeCookie Funktion wie folgt aussehen sollte:

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=/"; 
} 

Hinweis: der obige Code wird davon ausgegangen, dass Sie immer Schlüssel als erstes Argument übergeben wird, während die Funktion aufrufen.