第一次写Javascript.我想知道是否有更短的写法:
<p id="demo"></p>
<script>
function myFunction() {
var letter = document.getElementById("myInput").value;
var text;
if (letter === "5544") {
text = "Abar, Marlon 1,800";
} else if (letter === "5545") {
text = "Pia, Darla 1,800";
} else if (letter === "5546") {
text = "Salazar, Alex 1,500";
//etc...
} else {
text = "Incorrect Account Number";
}
document.getElementById("demo").innerHTML = text;
}
</script>
Run Code Online (Sandbox Code Playgroud)
试过地图,但我无法让它工作.
if用这种方式编写语句的方法并不简单(我假设你要问的是).但是,根据您要检查的内容,可能会有几种不同的方法来编写此内容.
在处理letter可能的多个案例时,有一种更清洁的方法.
这将是一个switch声明,它看起来像这样:
var text;
switch (letter) {
case "5544":
text = "Abar, Marlon 1,800";
break;
case "5545":
text = "Pia, Darla 1,800";
break;
// more cases
default:
text = "Incorrect Account Number";
break;
}
Run Code Online (Sandbox Code Playgroud)
if else在某些情况下,这比一个声明好一些.default此处的关键字在声明中充当您的else子句if else.如果您愿意,case可以作为您的不同if陈述.
从本质上讲,switch上面的陈述将落在它定义的每个案例中,直到找到匹配的案例letter(例如"5544").如果没有匹配,则会触及default案例.的break在每个月底关键字case从通过到下一个限定的下降停止的事情case一旦发现匹配.
超过6或7个案例,这种方法可能会很麻烦.
现在,获得所需值的更简单方法是定义一个对象,并根据输入的内容获取值,如下所示:
var letter = document.getElementById('selector').value;
var obj = {
'5544': 'Abar, Marlon 1,800'
};
if (letter in obj) {
// do something if found
}
else {
// do something if not found
}
Run Code Online (Sandbox Code Playgroud)
如果要检查多个值,这可能是获取值的简单方法.
作为所有这些的旁注,有一些if称为三元语句的简短语句,您可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator ..但是,我不建议将它们嵌套,因为它变得非常复杂并且不易读.
所以,重申你的问题的答案:不,没有一个更短的方法来编写if else具有许多值的语句.您可以使用switch语句使其更清晰.如果您要检查多个值,请使用对象查找方法.
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |