1

这是我的情况。我有一个下拉菜单来选择家中的国家。

如果没有 cookie,我将 cookie 默认设置为“美国”,然后用户在新选项卡中打开一个链接并转到结帐页面,我过滤其他国家并在下拉选择中仅显示所选国家,一切都很好,但是在第一个选项卡上时它在第二个选项卡上将国家更改为德国 Cookie 是德国,但国家仍然是美国。

有两种选择,

<select id="country">
    <option>Select Country</option>
    <option value="US">Select Country</option>
</select>

我想做的是

function readCookie(k){return(document.cookie.match('(^|; )'+k+'=([^;]*)')||0)[2]}  

或任何其他读取 cookie 的函数,如此处描述的在 JavaScript 中按名称读取 cookie 的最短函数是什么?

document.getElementById('country').onchange = function () { 
    this.options.length = 0;
    this.options[1] = new Option(readCookie('country'),readCookie('country'));
    this.options[1].setAttribute("selected","selected");
}

它们返回未定义,但当我使用配置文件检查时,cookie 就在那里。基本上,我只想根据 cookie 更新选项

当我做

document.getElementById('country').onchange = function () { 

    alert(readCookie('country'); //returns undefined
}
4

2 回答 2

0

您在创建 cookie 时检查了路径吗?确保路径是 /,我有时会忘记并创建 2 个 cookie 或无法删除旧的。

于 2012-11-17T11:54:03.483 回答
0

我改用本地存储。

于 2012-11-18T15:40:23.227 回答