2012-04-16 83 views
0

我现在正在学习javascript,所以这可能是一个非常新鲜的问题!我GOOGLE了它,但没有找到我正在寻找的东西,也许我只是没有搜索正确的东西,但是啊...哦,我没有使用任何插件的饼干。javascript - 检查cookie值是否在数组中

我有一个名为“国家”的cookie,值是用户的国家代码,如美国,加拿大,英国,澳大利亚或法国... 我想显示一个内容块只有当国家,让我们说DE,ES,AT,IT或NL。

的逻辑是什么即时寻找:如果cookie的“国家”的存在和国家==在我的数组的国家之一......

林想类似的东西......但是,这显然是过于简单而不是工作:)

var countryArray = new Array["DE", "ES", "AT", "IT", "NL"]; 

if($.cookie('country') && $.cookie('country') == countryArray) { alert("working"); } 

回答

1

你可以使用indexOf新的浏览器:

countryArray.indexOf($.cookie('country')) > -1 

另外,代替

countryArray = new Array["DE", "ES", "AT", "IT", "NL"]; 

你需要写:

countryArray = ["DE", "ES", "AT", "IT", "NL"]; 

UPDATE:对于老的浏览器包括这个脚本在js

Array.prototype.indexOf = Array.prototype.indexOf || function(value, startIndex){ 
    var i = startIndex || 0; 
    for(; i < this.length; ++i){ 
     if(value === this[i]){ 
      return i; 
     }   
    } 
    return -1; 
} 
+0

什么生根粉旧版本的IE? – Baz1nga 2012-04-16 16:55:48

+0

@ Baz1nga我不知道,'indexOf'只适用于新的浏览器。感谢您的宝贵意见。我已经更新了我的答案。 – Engineer 2012-04-16 17:11:05

+0

我是否需要在特定位置添加旧的浏览器脚本?在我的if语句之前/之后?在document.ready()中? – Lelly 2012-04-16 18:09:34

1

有一个关联数组来代替。

var countryArray = []; 

countryArray["DE"]=true; 
countryArray["ES"]=true; 
etc. 

if($.cookie('country') && countryArray[$.cookie('country')]) 
{ alert("working"); } 

在所有浏览器会运行