2011-12-01 18 views
12

Non sono un programmatore. Sto cercando di utilizzare uno script cookie che ricordi l'ultima selezione del menu a discesa.Data di scadenza del cookie

Ho trovato uno script che funziona ma fa solo un cookie di sessione. Come aggiungo una data di scadenza al cookie in questo script?

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

risposta

3

provare

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

PS. Il valore di 1000 * 60 * 60 * 24 * 365 = 1 anno

per ottenere l'indice selezionato provare questo 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

che non ha funzionato. Forse l'ho messo nel posto sbagliato. Puoi mostrarmi come dovrebbe essere qui http://jsfiddle.net/BrUmu/ –

+0

Basta impostarlo nella funzione SETcookie. che cosa ottieni? – CloudyMarble

+0

Sì, i cookie smettono di funzionare completamente. Vedi l'aggiornamento qui http://jsfiddle.net/BrUmu/1/ –

0

si potrebbe provare questo:

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

"oggi" non è definito e la tua funzione è solo per il tuo codice, perché utilizza l'oggetto DOM #myList. È buggy e inutile. –

+0

Hai ragione a dire che "oggi" non è definito qui ma "lista personale" era l'id dell'elemento dalla domanda, non è qualcosa che hanno appena inventato. –

7

Prova questo:

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 è il nome del cookie

012.

c_value è il valore del cookie

exdays è il numero di giorni che si desidera il cookie scadono dopo

Fonte: http://www.w3schools.com/js/js_cookies.asp

+0

l'escape è deprecato. Non dovresti usarlo. A proposito, controlla sempre gli esempi di w3schools ... –

2

Ecco la funzione che è al 100% di lavoro e non ha alcun ammortizzati funzioni.

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

Può essere che questo vi aiuterà

document.cookie = "coolName"+ "=" +"coolValue"+ ";" + "expires="+ new Date(new Date().getTime()+60*60*1000*24).toGMTString()+";path=/"; 
Problemi correlati