0

有没有办法让这个更漂亮?

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"; }
...

真正的代码要广泛得多,带有 && 和 || 不同变量之间。但是每一行都遵循相同的语法,保存我正在寻找的“字母”和我设置的变量。我有这么多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)。

非常感谢所有当前的建议。保持它来。

4

4 回答 4

7

你可以这样做:

var dic = {
  "a": "red",
  "b": "orange",
  "c": "yellow",
  "d": "green",
  "e": "blue",
  "f": "violet"
};

sOutput = $("#Input").text().toLowerCase();
lColor = dic[sOutput];
于 2012-08-02T02:03:36.963 回答
2

您可以使用对象文字。

//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
}
于 2012-08-02T02:03:41.543 回答
0

switch语句可读。你可以尝试任何其他花哨的方式,但对我来说,可读性是第一要务。

switch ($("#Input").text){
    case "A": 
        sOutput = "a"; 
        lColor = "red";
        break;
    case "B":
        sOutput = "b"; 
        lColor = "orange"; 
        break;
    case "C": 
       sOutput = "c"; 
       lColor = "yellow";
       break;
}
于 2012-08-02T02:22:52.007 回答
0

我决定重新设计我的整个逻辑,并开发出更好的东西。

感谢大家的帮助!

于 2012-08-02T15:19:55.083 回答