Javascript或在IF语句中
我试图在javascript中创建一个if语句,如果变量不等于几个不同的值中的一个,它将执行一些操作。我一直在尝试OR运算符的许多不同变体,但我无法使其工作Javascript或在IF语句中,javascript,Javascript,我试图在javascript中创建一个if语句,如果变量不等于几个不同的值中的一个,它将执行一些操作。我一直在尝试OR运算符的许多不同变体,但我无法使其工作 if(var != "One" || "Two" || "Three"){ // Do Something } 有什么想法吗?谢谢 更新: 我以前试过: if(var != "One" || var != "Two" || var != "Three"){ // Do Something } 由于某种
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的代码片段:
要获得更简短的方法,请尝试以下格式(复制自): 或
功能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
}