2011-12-01 17 views
12

Nie jestem programistą. Próbuję użyć skryptu cookie, który zapamiętuje ostatni rozwijany wybór menu.Data wygaśnięcia pliku cookie

Znalazłem skrypt, który działa, ale robi tylko plik cookie sesji. Jak dodać datę ważności do pliku cookie w tym skrypcie?

<head> 
    <script>   
    function SETcookie() { 
     document.cookie = "Selected=" + document.getElementById('myList').selectedIndex; 
    } 

    function GETcookie() { 
     if (document.cookie) { 
     eval(document.cookie); 
     document.getElementById('myList').selectedIndex = Selected; 
     } 
    }  
    </script> 
</head> 

<body onLoad="GETcookie()"> 
    <select id="myList" onChange="SETcookie()"> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
    <option value="3">Option 3</option> 
    <option value="4">Option 4</option> 
    </select> 
</body> 

Odpowiedz

3

spróbować

var a = new Date(); 
a = new Date(a.getTime() +1000*60*60*24*365); 
document.cookie = 'mycookie=somevalue; expires='+a.toGMTString()+';'; 

PS. Wartość 1000 * 60 * 60 * 24 * 365 = 1 Rok

aby uzyskać wybrany indeks spróbować tej GetCookie:

function GETcookie(){  
if (document.cookie){  
var a = document.cookie; 
Selected = a.substring(a.search('Selected=')+9,a.search(';')); 
alert("Selected = " + Selected); 
document.getElementById('myList').selectedIndex=Selected; 
}} 
+0

To nie działa. Może umieściłem to w niewłaściwym miejscu. Czy możesz mi pokazać, jak to powinno być? Http://jsfiddle.net/BrUmu/ –

+0

Po prostu ustaw to w swojej funkcji SETcookie. co dostajesz? – CloudyMarble

+0

Zrobiłem, ciasteczka przestały działać całkowicie. Zobacz aktualizację tutaj http://jsfiddle.net/BrUmu/1/ –

0

można spróbować to:

function SETcookie(){ 
    var validity_days = 7; 
    var expires = validity_days * 1000 * 60 * 60 * 24; 
    var expires_date = new Date(today.getTime() + (expires)); 
    document.cookie="Selected="+document.getElementById('myList').selectedIndex + ";expires=" + expires_date.toGMTString() + ";"; 
} 
+1

"dzisiaj" nie jest zdefiniowane, a twoja funkcja służy tylko do twojego własnego kodu, ponieważ używa obiektu DOM # myList. Jest niepoprawny i bezużyteczny. –

+0

Masz rację, że "dzisiaj" nie jest tutaj zdefiniowane, ale "myList" było id elementu z pytania, to nie jest coś, co tylko wymyślili. –

7

Spróbuj tego:

function setCookie(c_name,c_value,exdays) { 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    document.cookie=encodeURIComponent(c_name) 
    + "=" + encodeURIComponent(c_value) 
    + (!exdays ? "" : "; expires="+exdate.toUTCString()); 
    ; 
} 

c_name to nazwa pliku cookie

c_value jest wartość cookie

exdays jest liczba dni chcesz cookie wygasa po

Źródło: http://www.w3schools.com/js/js_cookies.asp

+0

escape jest przestarzałe. Nie powinieneś go używać. Przy okazji, zawsze dokładnie sprawdzaj przykłady z w3schools ... –

2

Oto funkcja, która jest w 100% sprawny i nie ma amortyzowane Funkcje.

function setCookie(variable, value, expires_seconds) { 
    var d = new Date(); 
    d = new Date(d.getTime() + 1000 * expires_seconds); 
    document.cookie = variable + '=' + value + '; expires=' + d.toGMTString() + ';'; 
} 
2

Może to pomoże

document.cookie = "coolName"+ "=" +"coolValue"+ ";" + "expires="+ new Date(new Date().getTime()+60*60*1000*24).toGMTString()+";path=/"; 
Powiązane problemy