23. februar 2005 - 22:18Der er
9 kommentarer og 1 løsning
Replace value cookie
Nedenstående funktion tester værdien af en cookie. Hvis "value" allerede er repræsenteret i cookien fjernes den, hvis den ikke er repræsenteret tilføjes den.
function writeCookieMenu(name,value,expTime,path){//Tid i dage value = replaceCookieValue(getCookie('menu'),value); switch(writeCookieMenu.arguments.length){ case 1: var expTime = 0; var path = "/"; case 2: var expTime = 0; var path = "/"; case 3: var path = "/"; } var exp = new Date().getTime()+expTime*24*60*60*1000; exp = new Date(exp).toGMTString(); var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path; document.cookie = cook; } function replaceCookieValue(Cval,Mval){ if(Cval.indexOf(Mval)>-1){ if(Cval.length==Mval.length)return ""; Cval = Cval.split(","); var Nval = ""; for(i=0;Cval.length>i;i++){ if(Cval[i]!=Mval)Nval += Cval[i] + ","; } return Nval.substring(0,Nval.length-1); }else if(Cval.length>0) return Cval+","+Mval; else return Mval; }
Nu skal jeg bruge følgende funktion: Hvis "value" allerede er repræsenteret i cookien skal intet gøres, hvis den ikke er repræsenteret skal den tilføjes.
Jeg er ikke så skrap til JavaScript. Derfor har jeg pastet min kode, da jeg blot tror, at den skal tilpasses.
Jeg kunne ikke lige umiddelbart få det til at fungere.
For at være helt sikker på, at funktionen gør det rigtige kommer her en supplerende beskrivelse:
Funktionen får indholdet af cookien samt den værdi, der skal testes. Indholdet af cookien vil være på følgende form: "menu_1;menu_2;menu_5" eller lign. (evt. helt tom). Hvis test-værdien er "menu_2", skal funktionen ikke ændre på noget, da "menu_2" allerede er repræsenteret i cookien. Er test-værdien derimod "menu_3", skal funktionen sætte cookiens værdi til "menu_1;menu_2;menu_5;menu_3", da "menu_3" ikke på forhånd var repræsenteret i cookien.
Jeg har allerede en funktion, der fjerner en værdi fra cookien (f.eks. fjerne "menu_2" så cookiens værdi bliver "menu_1;menu_5"). Her skal jeg derimod bruge en funktion, der kun kan tilføje - ikke fjerne.
Nu virker den ene del. Hvis værdien allerede er repræsenteret i cookien, ændres intet. Hvis værdien derimod ikke er repræsenteret i cookien sker heller ikke noget. I så fald skal værdien af cookien ændres, så den indeholder den nye værdi.
Hvordag gør jeg det? Jeg har allerede en funktion, der kan skrive til en cookie. Kan jeg blot indsætte den i din funktion et sted??
function writeCookieMenu(name,value,expTime,path){//Tid i dage value = replaceCookieValue(getCookie('menu'),value); switch(writeCookieMenu.arguments.length){ case 1: var expTime = 0; var path = "/"; case 2: var expTime = 0; var path = "/"; case 3: var path = "/"; } var exp = new Date().getTime()+expTime*24*60*60*1000; exp = new Date(exp).toGMTString(); var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path; document.cookie = cook; }
function replaceCookieValue(Cval,Mval){ return (Cval.indexOf(Mval)>-1)?Cval:(Cval.length>0)?Cval+","+Mval:Mval; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.