2013-04-25 190 views
0

document.setbackground.bgcolor.value通過認證可以正常工作並存儲十六進制值(例如,黑色爲「000000」。該腳本還適用於從更新值的實時表單中選擇新的頁面時更改頁面背景的顏色持久Cookie

我的問題是,儘管我的代碼存儲了一個cookie與我的瀏覽器,但是當我關閉瀏覽器並重新打開時,它不起作用,我希望背景開始存儲在cookie中。與我的代碼或我的瀏覽器設置?

function setBackground() { 
    if (document.setbackground.bgcolor.value != "none"){ 
      document.body.bgColor = "#" + document.setbackground.bgcolor.value; 
      document.cookie = "bgColor=" + document.setbackground.bgcolor.value + 
       ";expires=Wednesday, 02-Mar-2020 12:00:00 GMT;"; 
    } 
} 

此代碼嵌入到以下HTML中的setPrefe rence.js文件:

<html> 
<head> 
    <script src="setPreference.js"></script> 
</head> 
<body bgcolor="#9999CC"> 
    <center> 
    <form name="setbackground"> 
    Change background color? 
    <select name="bgcolor" onchange="setBackground();" size="1"> 
     <option value="none">Select color</option> 
     <option value="9999CC">Lavender</option> 
     <option value="999966">Light Brown</option> 
     <option value="66FFCC">Light Green</option> 
     <option value="FFFFFF">White</option>  
    </select> 
    </center> 
    </form> 
</body> 
</html> 
+0

和你在哪裏加載它? – Zaffy 2013-04-25 17:42:42

+0

我已更新以顯示HTML。 – 2013-04-25 20:02:20

回答

0

當用戶從一個select項目將設置的bgcolor它的價值和創建cookie。

但您還需要加載該cookie並設置bgColor。

你可以使用一些簡單的像這樣(其附加到你的JS):

// document.cookie - name1=value1; name2=value2; name3=value3 

function GetCookie(what) 
{ 
    var cookies = document.cookie.split(/; ?/g); // now we have array of name=value pairs 
    for(var i in cookies) 
    { 
     var pair = cookies.split("=", 1); 
     var name = decodeURIComponent(pair[0]); 
     var value = decodeURIComponent(pair[1]); 

     if (name == what) 
      return value; 
    } 
} 

window.onload = function() 
{ 
    var color = GetCookie("bgColor"); // note that in the cookie can be ANY value as it comes from the user. So some condition to validate input wouldnt be bad idea 
    document.setbackground.bgcolor.value = color; 
    setBackground(); 
}