2013-04-11 5 views
0

Y at-il de toute façon de le faire:JavaScript instruction if

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

# Puis-je faire simple en quelque sorte une façon comme ça, j'ai essayé, mais ça n'a pas marché:

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

double possible de [Javascript: La plus jolie façon de comparer une valeur par rapport à plusieurs valeurs] (http: // stackoverflow.com/questions/9121395/javascript-la-plus-belle-façon-de-comparer-une-valeur-contre-multiple-values) –

Répondre

5

Tout comme une alternative aux autres réponses, si vous ne voulez pas à déclarer une autre variable dans ce champ pour une raison quelconque:

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

S'il vous plaît noter que les anciens navigateurs ne prennent pas en charge Array.prototype.indexOf donc vous devez inclure a polyfill pour gérer cela.

2

La façon dont vous suggérez ne fonctionne pas, comme vous l'avez compris. La partie || 3 sera toujours truthy, et par conséquent, le code dans l'instruction if sera toujours exécuté.

Si vous souhaitez rendre l'instruction if plus lisible, vous pouvez conserver la valeur dans une variable et utiliser la variable dans l'instruction if. Quelque chose comme ceci:

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

vous pouvez obtenir la valeur avant la main, ce qui rendrait plus clair lire

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

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

Cela échouera toujours, car les valeurs des éléments sont des chaînes. –

+1

Upvoted car il utilise === au lieu de ==. – sockmonk

+0

@Kinkink ty, corrigé, je ne suis pas familier avec js :) – dm03514

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

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

Avec un navigateur moderne:

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

anciennes versions d'IE auront besoin d'une cale pour y parvenir. Ou vous pouvez l'implémenter:

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

si vous voulez faire quelque chose lorsque la valeur est 2 ou 3, il suffit d'écrire

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

Quelque chose de différent:

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

Personnellement, je l'utilise pour de telles situations - c'est souvent le plus court (d'autant plus que les 'OR' s'accumulent).

+1

La réponse originale, mais peut être difficile à lire/comprendre si vous y revenez plus tard, et serait également très salissant si vous voulez plus de valeurs. –

+0

@Kolink bien, cela dépend de ce que vous êtes habitué. Personnellement, je suis à l'aise avec elle et l'utilise donc .. c'est aussi familier que toute autre chose .. Aussi plus de valeurs est juste: {2: 0,3: 0,4: 0,5: 0} .. etc Cheers –

0

Essayez comme ci-dessous, il vous aidera à

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

Script:

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

Script complète:

<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

essayer cette

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

if (x == 2 || x == 3) { 
     //Do somthing 
    } 
Questions connexes