2011-12-01 145 views
12

我不是程序員。我正在嘗試使用一個記錄最後一個下拉菜單選項的cookie腳本。Cookie的過期日期

我發現了一個可行的腳本,但它只有一個會話cookie。如何在此腳本中向Cookie添加到期日期?

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

回答

3

嘗試

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

PS。值1000 * 60 * 60 * 24 * 365 = 1年

獲取所選指數試試這個的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

這沒有奏效。也許我把它放在一個錯誤的地方。你能告訴我它應該如何在這裏http://jsfiddle.net/BrUmu/ –

+0

只需在你的SETcookie函數中設置它。你得到了什麼? – CloudyMarble

+0

我做了,cookies完全停止工作。在這裏查看更新http://jsfiddle.net/BrUmu/1/ –

0

你可以試試這個:

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

「today」未定義,您的函數僅用於您自己的代碼,因爲它使用#myList DOM對象。這是越野車和無用的。 –

+0

你是對的,'今天'沒有在這裏定義,但「myList」是來自問題的元素的ID,它不是他們剛纔所做的。 –

7

試試這個:

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是cookie的名稱

c_value是cookie值

exdays是你想要的餅乾到期的天數後

來源:http://www.w3schools.com/js/js_cookies.asp

+0

越獄已棄用。你不應該使用它。順便說一句,總是仔細檢查w3schools的例子... –

2

這裏的函數,它是100%的工作,並沒有貶值功能。

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

可能,這將有助於

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