2012-11-17 97 views
1

这是我的情况。 我有一个下拉菜单选择家中的国家。阅读cookies返回undefined

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

有两种选择,

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

我想要做的就是

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

或任何其他函数读取Cookies与这里的一些描述What is the shortest function for reading a cookie by name in JavaScript?

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 
} 
+0

我不能读任何cookie,这很奇怪。 – flakerimi

回答

0

你创建一个cookie时检查路径?确保路径是/,我有时会忘记并创建2个饼干或无法删除旧的饼干。

+0

Yeap,它是 country = United + States; expires =星期六,2012年11月17日12:52:53 GMT;路径= /;域= .local.dev;仅Http – flakerimi