第一次写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>
试过地图,但我无法让它发挥作用。
答案 0 :(得分:5)
以这种方式编写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;
}
在某些情况下,这比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
}
如果要检查多个值,这可能是获取值的简单方法。
作为所有这些的旁注,有一些称为三元语句的简短if
语句,你可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator ...但是,我不建议将它们嵌套,因为它变成了非常复杂,不太可读。
所以,重申一下你的问题的答案:不,写一个带有很多值的if else
语句并不是一个更短的方法。您可以使用switch
语句使其更清晰。如果您要检查多个值,请使用对象查找方法。
答案 1 :(得分:0)
JavaScript具有对象(map)文字。将它们用于简洁代码。在您的最终应用程序中,您将从其他地方获取地图数据,而不是将其直接编入您的网站,但如果您这样做,它将如下所示:
document.getElementById( "demo" ).innerHTML = {
"5544" : "Abar, Marlon 1,800",
"5445" : "Pia, Darla 1,800",
...
}[ document.getElementById( "myInput" ).value ];
答案 2 :(得分:-1)
你可以使用switch for if - else -if ladder:
switch(expression) {
case n:
code block
break;
case n:
code block
break;
default:
default code block
}
这是它的工作原理:
1)切换表达式被评估一次
2)将表达式的值与每个案例的值进行比较
3)如果匹配,则执行相关的代码块。
如果您需要java脚本中的基础教程,那么您应该尝试w3学校。