Javascript切换错误的情况

时间:2013-05-29 13:19:05

标签: javascript jquery switch-statement case default

你好(又一次)一个关于javascript的问题,这一个必须是一个简单的,但我只是看不出我做错了什么,我认为一些非常愚蠢的事情:

我有一个文本框和一个按钮。当我单击按钮时,值将被传递给名为activiteitn的变量。代码:

    activiteitn = $("#m2activiteitn").val();

它获取值,所以当我填写数字1时,activiteitn = 1。 之后我有一个看起来像这样的开关:

        switch(activiteitn) {
        case  1: activiteitn = 1.2;
        break;
        case  2: activiteitn = 1.375;
        break;
        case  3: activiteitn = 1.55;
        break;
        case  4: activiteitn = 1.725;
        break;
        case  5: activiteitn = 1.9;
        break;
        default: alert("hoi");
        break;
        }

问题是,即使我填写数字1,它也会跳转到默认情况,导致它发出警报。如果我在案例1中发出警报,警报未显示。我想到的第一件事就是活动不是1,所以在切换后我又发出了警告:

        alert (activiteitn);

现在,首先发生的事情是我收到警报“hoi”,然后我得到了第二个activiteitn的警告:1。之后我想,“也许它是一个字符串”,所以我将案例改为字符串喜欢:case“1”&案例(“1”),但也没有用。问题是,它始终是默认情况,我无法弄清楚为什么会这样,我希望有人看到我做错了什么,可以帮助我。

2 个答案:

答案 0 :(得分:5)

.val()返回一个字符串,而不是一个数字。在行之后:

activiteitn = $("#m2activiteitn").val();

变量activiteitn实际上等于"1",而不是1。自case...switch uses strict equality起,您的测试将始终失败。

要修复,只需将上面的行更改为:

activiteitn = +$("#m2activiteitn").val(); // convert to a number

activiteitn = parseInt($("#m2activiteitn").val(),10); // convert to an integer

activiteitn = parseFloat($("#m2activiteitn").val()); // convert to a float

答案 1 :(得分:1)

使用parseInt(activiteitn, 10);将String转换为整数。 Javascript中的switch-case语句与Strings的使用时间不是很好。