Javascript或在IF语句中

Javascript或在IF语句中,javascript,Javascript,我试图在javascript中创建一个if语句,如果变量不等于几个不同的值中的一个,它将执行一些操作。我一直在尝试OR运算符的许多不同变体,但我无法使其工作 if(var != "One" || "Two" || "Three"){ // Do Something } 有什么想法吗?谢谢 更新: 我以前试过: if(var != "One" || var != "Two" || var != "Three"){ // Do Something } 由于某种

我试图在javascript中创建一个if语句,如果变量不等于几个不同的值中的一个,它将执行一些操作。我一直在尝试OR运算符的许多不同变体,但我无法使其工作

 if(var != "One" || "Two" || "Three"){
    // Do Something
    }
有什么想法吗?谢谢

更新:

我以前试过:

 if(var != "One" || var != "Two" || var != "Three"){
    // Do Something
    }
由于某种原因,它不起作用。我的变量正在从DOM中提取信息,我不知道这是否会影响它

实际代码

// Gets Value of the Field (Drop Down box)
var itemtype = document.forms[0].elements['itemtype' + i];

    if(itemtype.value != "Silverware" || itemtype.value != "Gold Coins" || itemtype.value != "Silver Coins"){   
// Do Something
        }

使用数组的替代方法:

var selected = ['Silverware', 'Gold Coins', 'Silver Coins'];
if ( selected.indexOf( el.value ) != -1 ) {
   // do something if it *was* found in the array of strings.
}
注意:
indexOf不是本机方法,请在此处获取IE的代码片段:

假设你的意思是“val不等于一、二或三”,那么德摩根定理适用:

if ((val != "One") && (val != "Two") && (val != "Three")) { // Do something... } 如果((val!=“一”)&&(val!=“二”)&&(val!=“三”)){ //做点什么。。。 }
要获得更简短的方法,请尝试以下格式(复制自):

功能oc(a)
{
var o={};

对于(var i=0;i您的表达式始终为真,您需要:

if(!(myVar == "One" || myVar == "Two" || myVar == "Three")) { 
  // myVar is not One, Two or Three
} 
或:

简而言之:

if (!/One|Two|Three/.test(myVar)) {
  // myVar is not One, Two or Three
}
// Or:
if (!myVar.match("One|Two|Three")) {
  // ...
}
更多信息:


编辑:如果您选择最后一种方法,因为您发布的代码似乎是循环的一部分,我建议您在循环之外创建正则表达式,并使用该方法,而不是,您也可能希望关注单词边界,即“noOne”将匹配“One”如果没有它们…

除了将表达式扩展为三个子句之外,我认为您最好将变量命名为
var
以外的其他名称。在JavaScript中,
var
是一个关键字。大多数浏览器不会提醒您此错误。

Mike提到的方法只适用于3个值,但如果您不想的话o将其扩展到
n
值,您的
if
块将很快变得丑陋。Firefox 1.5+和IE 8有一个
数组。indexOf
方法可以像这样使用:

if(["One","Two","Test"].indexOf(myVar)!=-1)
{
    //do stuff
}

要在IEas上支持此方法,请注意:var是一个关键字,而不是等效的变量名,
!(var==“One”| | var==“Two”| | var==“Three”)
。后两种方法是好的,第一种是错误的,正如在其他答案中讨论的那样(
|
应该是
&
)。谢谢科巴,我会修正我的答案。我以前试过这个,但它没有,因为我需要相反的答案。不在。不在。不在。科巴,不&&它需要|不(a或b)等同于(不是a)和(不是b)变量不是真正的var。这只是一个例子。+1用于指出
var
标识符的问题。我不知道为什么这被否决。谢谢,最后是一个合理的答案。我现在就试试。我会使用regexp
!myVar.match(/One | Two | Three/)
而不是传入字符串-但是+1用于覆盖所有bases@Chris...他有56K是有原因的:)@CMS+1,答案很好always@gnarf,同意,并且应该在循环外部创建RegExp(代码片段似乎是循环的一部分(
…['itemtype'+i];…
)等等,OP不是只想在值不是“1”或“2”或“3”时执行某项操作吗?如果是,表达式!/One | Two | Two/.test(myVar)不正确。值“One”不是“1”,但它与/One/匹配。您想使用^and$。
if ((myVar != "One") && (myVar != "Two") && (myVar != "Three")) {
  // myVar is not One, Two or Three
}
if (!/One|Two|Three/.test(myVar)) {
  // myVar is not One, Two or Three
}
// Or:
if (!myVar.match("One|Two|Three")) {
  // ...
}
if(["One","Two","Test"].indexOf(myVar)!=-1)
{
    //do stuff
}
Array.prototype.hasElement = function hasElement(someElement)
{
    for(var i=0;i<this.length;i++)
    {
        if(this[i]==someElement) 
            return true;
    }
    return false;
}
if(!["One","Two","Three"].hasElement(myVar))
{
    //do stuff
}