1

我在从日历值中区分值时遇到问题。例如:从 calendar = "2013-08-25" 输入文本值,然后脚本案例如下:

<script>
function convertDate() {
    var z = document.forms["form1"]["date_get"].value;
    var month = z.substring(5,7);

    switch (month) {
        case 01:
            x="I";
            break;
        case 02:
            x="II";
            break;
        case 03:
            x="III";
            break;
        case 04:
            x="IV";
            break;
        case 07:
            x="VII";
            break;
        case 08:
            x="VIII";
            break;
    }

    document.forms["form1"]["trans_code"].value = x;
}
</script>

结果还是I

案例陈述不起作用。

4

5 回答 5

3

尝试:

case "01":
x="I";
break;
case "02":
x="II";
break;
etc...

请注意,由于您比较字符串 - 这些值 01、02 等需要表示为字符串“01”、“02”等。

如果您提供不带引号的 01,它将被解释为 1(整数),这通常表示“真”。这就是它接受第一种情况的原因。

于 2013-08-25T09:02:08.727 回答
1

您忘记了字符串 01 02 03 的单引号或双引号 ...

var z = '2013-08-25';
var month = z.substring(5,7);
var x = '';
switch (month)
{
    case '01':
        x="I";
        break;
    case '02':
        x="II";
        break;
    case '03':
        x="III";
        break;
    case '04':
        x="IV";
        break;
    case '07':
        x="VII";
        break;
    case '08':
        x="VIII";
        break;
    // etc.
}
alert(x);
于 2013-08-25T09:04:19.533 回答
1

dict 可能比 switch case 更好:

var trans = {'01': 'I', '02': 'II'};
var month = '02';
alert(trans[month]);

另见:http: //james.padolsey.com/javascript/how-to-avoid-switch-case-syndrome/

http://encosia.com/first-class-functions-as-an-alternative-to-javascripts-switch-statement/

https://coderwall.com/p/s7592q

于 2013-08-25T09:25:24.597 回答
0

在 case 语句中使用引号,例如 case "01"

于 2013-08-25T09:10:17.333 回答
0

将子字符串显式转换为数字,并注意JavaScript 中以零开头的数字的八进制表示法。

<script>
function convertDate() {
    var z = document.forms["form1"]["date_get"].value;
    var month = +z.substring(5,7); //or parseInt(...)

    switch (month) {
        case 01:
            x="I";
            break;
        case 02:
            x="II";
            break;
        case 03:
            x="III";
            break;
        case 04:
            x="IV";
            break;
        case 07:
            x="VII";
            break;
        case 08:
            x="VIII";
            break;
    }

    document.forms["form1"]["trans_code"].value = x;
}
</script>
于 2013-08-25T13:15:01.577 回答