2

你好(再次)一个关于 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 中发出警报,则该警报不会出现。我首先想到的是 activiteitn 不是 1,所以在切换后我立即发出了另一个警报:

        alert (activiteitn);

现在,首先发生的是我收到警报“hoi”,然后我收到第二个 activiteitn 警报,上面写着: 1. 所以在那之后我想,“也许它是一个字符串”,所以我将案例更改为字符串,例如:案例"1" & case ("1") 但这也不起作用。问题,它总是出现在默认情况下,我不知道为什么会这样,我希望有人看到我做错了什么并可以帮助我。

4

2 回答 2

5

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

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

变量activiteitn实际上等于"1",而不是1。由于case...switch使用严格相等,您的测试将始终失败。

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

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

或者

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

或者

activiteitn = parseFloat($("#m2activiteitn").val()); // convert to a float
于 2013-05-29T13:22:11.487 回答
1

用于parseInt(activiteitn, 10);将您的字符串转换为整数。Javascript 中的 switch-case 语句在一半时间内不能很好地与字符串一起使用。

于 2013-05-29T13:22:17.133 回答