如何将switch语句放在另一个switch语句中

时间:2013-10-25 07:59:15

标签: javascript jquery switch-statement

我试图在用户在2个选择框中进行选择后计算出引用值。

看起来1需要2个switch语句。这可能吗? (有比下面更多的可能值。我为了清楚起见删除了它们)

 var workOutQuote = function() {
        var value1 = $("#delivery_from_area").val();
        var value2 = $("#delivery_to_area").val();
        var val = '';
            switch (value1)
            { case '1':
                { switch (value2)
                    { case '1': val="90"; break; }
                    { case '2': val="80"; break; }
                    { case '3': val="70"; break; }
                }
            }
            { case '2':
                { switch (value2)
                    { case '1': val="80"; break; }
                    { case '2': val="90"; break; }
                    { case '3': val="70"; break; }
                }
            }
}

使用上面的代码我收到错误:

Uncaught SyntaxError: Unexpected token case 

4 个答案:

答案 0 :(得分:8)

如果 BREAK ,请使用 don't want to call all case 。 否则,您将获得意外结果

 var workOutQuote = function() {
        var value1 = $("#delivery_from_area").val();
        var value2 = $("#delivery_to_area").val();
        var val = '';
            switch (value1){ 
            case '1':
                 switch (value2){
                     case '1': val="90"; break; 
                     case '2': val="80"; break; 
                     case '3': val="70"; break; 
                }

            break;
            case '2':
                 switch (value2){
                     case '1': val="80"; break; 
                     case '2': val="90"; break; 
                     case '3': val="70"; break; 
                }
                break;             
}

答案 1 :(得分:3)

您将案例放在braces中,这是您的代码{ case '1': val="90"; break; }

中的一个示例
    var value1 = '2';
    var value2 = '2';
    var val = '';
    switch (value1) {
        case '1':
            {
                switch (value2) {
                    case '1':
                        val = "90";
                        break;

                    case '2':
                        val = "80";
                        break;

                    case '3':
                        val = "70";
                        break;
                }
            }
        case '2':
            {
                switch (value2) {
                    case '1':
                        val = "80";
                        break;
                    case '2':
                        val = "90";
                        break;
                    case '3':
                        val = "70";
                        break;
                }
            }
    }

Demo

答案 2 :(得分:3)

switch ()(javascript语法要求你包括)提前结束之后,过度使用大括号会导致语句。调整为:

        switch (value1){
        case '1':
            switch (value2){
                case '1': val="90"; break;
                case '2': val="80"; break;
                case '3': val="70"; break;
            }
            break;            
        case '2':
            switch (value2){
                case '1': val="80"; break;
                case '2': val="90"; break;
                case '3': val="70"; break;
            }
            break;
       }

我也冒昧地在你的外部案件之间放置一个break;,因为目前你的第一个案件会进入下一个案件。

我添加的最后break(位于底部)是为了清晰起见:许多人不会包含此内容。

答案 3 :(得分:1)

不要在每个案例周围放置括号:

        switch (value1)
        { case '1':
            { switch (value2)
                { case '1': val="90"; break; }
                { case '2': val="80"; break; }

应该是:

        switch (value1)
        { case '1':
            switch (value2) {
                 case '1': val="90"; break; 
                 case '2': val="80"; break; 
            }
        }