0

document.setbackground.bgcolor.value確実に機能し、16 進値 (黒の場合は「000000」など) を格納します。このスクリプトは、値を更新するライブ フォームから新しいものが選択されたときに、ページの背景色を変更するためにも機能します。

私の問題は、コードがブラウザーに 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;";
     }
}

このコードは、setPreference.js ファイルの次の HTML に埋め込まれています。

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

1 に答える 1

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();
}
于 2013-04-25T21:37:49.717 に答える