改进多个if语句的语法?
有没有办法让这个更漂亮;改进多个if语句的语法?
if ($("#Input").text === "A") { sOutput = "a"; lColor = "red"; }
if ($("#Input").text === "B") { sOutput = "b"; lColor = "orange"; }
if ($("#Input").text === "C") { sOutput = "c"; lColor = "yellow"; }
if ($("#Input").text === "D") { sOutput = "d"; lColor = "green"; }
if ($("#Input").text === "E") { sOutput = "e"; lColor = "blue"; }
if ($("#Input").text === "F") { sOutput = "f"; lColor = "violet"; }
...
真正的代码更加广泛,与& &和||在不同变量之间。但每行都遵循相同的语法,保存我正在查找的'letter(s)'以及我设置的变量。对我来说,我感到很浪费,我有很多ifs。
*该代码是虚拟代码来说明我的观点。
编辑
伪代码是不是说明我的观点,所以这里是真正的样品;
if ($(".Fig_Main").hasClass("Active")) {
sect_1 = (($(".Fig_A").hasClass("Active")) && ($(".Fig_1").hasClass("Active"))) ? "Slide_A1"
: (($(".Fig_A").hasClass("Active")) && ($(".Fig_B").hasClass("Active"))) ? "Slide_AB"
: (($(".Fig_1").hasClass("Active")) && ($(".Fig_B").hasClass("Active"))) ? "Slide_1B"
: (($(".Fig_1").hasClass("Active")) && ($(".Fig_3").hasClass("Active"))) ? "Slide_13"
...
我有此块(这是几行更长)重复几次,为不同的sect_#每个时间,并且得到的设定值(Slide_XY)。
所有当前的建议非常感谢。保持它来。
你可以做这样的事情:
var dic = {
"a": "red",
"b": "orange",
"c": "yellow",
"d": "green",
"e": "blue",
"f": "violet"
};
sOutput = $("#Input").text().toLowerCase();
lColor = dic[sOutput];
虽然这很好,但我对转换为小写字母毫无兴趣,这只是示例的一部分。如果这种格式可以支持每个'if'声明多个变量,那么我希望这样。 – 2012-08-02 02:25:18
您可以使用对象文本。
//extend the object as needed.
var obj = {
'A': { sOutput:'a', lColor: 'red' },
'B': { sOutput:'b', lColor: 'orange' },
}
var x = 'B';
console.log(obj[x]);
编辑:
你甚至可以借此进一步与测试,看看是否 'X' 变量的值甚至被定义为:
var x = 'Z';
if(!(x in obj)){
//do stuff if Z isn't defined
}
switch
说法是可读的。你可以尝试其他任何花哨的方式,但对我来说,可读的优先数1
switch ($("#Input").text){
case "A":
sOutput = "a";
lColor = "red";
break;
case "B":
sOutput = "b";
lColor = "orange";
break;
case "C":
sOutput = "c";
lColor = "yellow";
break;
}
如果它是($(“#Input”+ target +“_Container”)。text),我想翻转'target'以及该怎么办? – 2012-08-02 02:27:56
听起来像你有类似的声音'CSS ID',在这种情况下,你应该使用正确的jQuery'结束与'或'开始'选择器,请参阅:http://api.jquery.com/category/selectors/ – 2012-08-02 02:33:36
我决定重新设计我的整个逻辑,我开发更好的东西。
感谢所有帮助,虽然家伙!
使用地图和下部框。不知道非虚拟代码是否有益,但是 - 不知道你真的是什么*真的很难知道如何提供帮助。 – 2012-08-02 02:01:33
代码可读,但不一定高效。如果没有'else',javascript将别无选择,只能测试所有条件。 – 2012-08-02 02:03:00
@RosdiKasim,它不是'Java'而是'javascript'。 – 2012-08-02 02:03:48