2013-04-11 4 views
0

Есть в любом случае сделать это:JavaScript, если заявление

if (document.getElementById("x").value == 2 || document.getElementById("x").value == 3) { 
     //Do somthing 
    } 

# Могу ли я сделать это просто в какой-то способ, как это, я пытался, но не получилось:

if (document.getElementById("x").value == 2 || 3) { 
     //Do somthing 
    } 
+0

возможного дубликат [Javascript: самый хорошенький способ сравнить одно значение против множества значений] (HTTP: // StackOverflow.com/questions/9121395/javascript-the-prettiest-way-to-compare-one-value-on-multiple-values) –

ответ

5

Подобно тому, как альтернатива другие ответы, если вы не хотите чтобы объявить другую переменную в этой области для какой-либо причине:

if (["2", "3"].indexOf(document.getElementById("x").value) > -1) { 
    // Do something 
} 

Пожалуйста, обратите внимание, что старые браузеры не поддерживают Array.prototype.indexOf, поэтому вам нужно будет указать a polyfill, чтобы справиться с этим.

2

То, как вы предлагаете, не работает, как вы поняли себя. Часть || 3 всегда будет truthy, и поэтому код внутри оператора if всегда будет работать.

Если вы хотите сделать if-инструкцию более читаемой, вы можете сохранить значение в переменной и использовать переменную в if-statement. Что-то вроде этого:

var xVal = document.getElementById("x").value; 
if (xVal == 2 || xVal == 3) { 
    //Do somthing 
} 
0

вы можете получить значение, прежде чем руки, что сделало бы его прочитать понятнее

var yourValue = document.getElementById("x").value 

if (yourValue == 2 || yourValue == 3) 
+1

Это всегда будет терпеть неудачу, потому что значения элементов являются строками. –

+1

Упрощенный, потому что он использует === вместо ==. – sockmonk

+0

@ Kolink ty, исправлено, я не так знаком с js :) – dm03514

0
var myValue = document.getElementById("x").value; 

if(myValue == 2 || myValue == 3) { 
    //... 
} 
0

С современным браузером:

if([2,3].indexOf(document.getElementById('x').value) > -1) 

Старых версиям IE потребуется подкладка для достижения этой цели. Или вы можете реализовать его самостоятельно:

function in_array(needle,haystack) { 
    var l = haystack.length, i; 
    for(i=0; i<l; i++) { 
     if(haystack[i] == needle) return true; 
    } 
    return false; 
} 
// ... 
if(in_array(document.getElementById('x').value,[2,3])) { 
0

, если вы хотите сделать что-то, когда значение либо 2 или 3, то есть только написать

if (document.getElementById("x").value == 2 || document.getElementById("x").value == 3) { 
    //Do something 
} 
2

что-то другое:

if (document.getElementById("x").value in {2:0,3:0}) { 
    //Do something 
} 

Лично я использую это для таких ситуаций - он часто на самом деле самый короткий (особенно, поскольку «ORs» накапливается).

+1

Оригинальный ответ, но может быть трудно прочитать/понять, если вы вернетесь к нему позже, а также получите очень грязный, если вы хотите больше значений. –

+0

@ Kolink хорошо, это зависит от того, к чему вы привыкли. Мне лично это нравится, и я использую его так .. это так же хорошо, как и все остальное. Также больше значений: {2: 0,3: 0,4: 0,5: 0} и т. Д. Cheers –

0

Попробуйте, как показано ниже, это поможет вам

Fiddle:http://jsfiddle.net/RYh7U/129/

Сценарий:

var value = document.getElementById("x").value; 
if ((value in [,1,2])) 
alert("Do SomeThing"); 

Полный скрипт:

<html> 
<head> 
<script type='text/javascript'> 

function check() 
{ 
    var value = document.getElementById("txtin").value; 
    if ((value in [,1,2,3])) 
    alert("Do SomeThing"); 
} 

</script> 
</head> 
<body> 
    <a href="#" onclick='check()'>check</a> 
    <input type="text" id="txtin"/> 
</body> 
</html> 
0

попробовать этот

var x=document.getElementById("x").value; 

if (x == 2 || x == 3) { 
     //Do somthing 
    } 
Смежные вопросы