Nie*_*man 2 javascript jquery default case switch-statement
你好(再次)一个关于javascript的问题,这一个必须是一个简单的,但我只是看不出我做错了什么,我认为一些非常愚蠢的事情:
我有一个文本框和一个按钮.当我单击按钮时,值将被传递给名为activiteitn的变量.码:
activiteitn = $("#m2activiteitn").val();
Run Code Online (Sandbox Code Playgroud)
它得到了值,所以当我填写数字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;
}
Run Code Online (Sandbox Code Playgroud)
问题是,即使我填写数字1,它也会跳转到默认情况,导致它发出警报.如果我在案例1中发出警报,警报未显示.我想到的第一件事是活动不是1,所以在切换后我又发出了另一个警报:
alert (activiteitn);
Run Code Online (Sandbox Code Playgroud)
现在,首先发生的事情是我得到警报"hoi",然后我得到了activiteitn的第二个警告说:1.所以在那之后我想,"也许它是一个字符串",所以我将案例改为字符串如:case "1"和案例("1"),但这也不起作用.问题,它始终是默认情况,我无法弄清楚为什么会这样,我希望有人看到我做错了什么,可以帮助我.
.val()返回一个字符串,而不是一个数字.所以行后:
activiteitn = $("#m2activiteitn").val();
Run Code Online (Sandbox Code Playgroud)
变量activiteitn实际上等于"1",而不是1.由于case...switch使用严格相等,您的测试将始终失败.
要修复,只需将上面的行更改为:
activiteitn = +$("#m2activiteitn").val(); // convert to a number
Run Code Online (Sandbox Code Playgroud)
要么
activiteitn = parseInt($("#m2activiteitn").val(),10); // convert to an integer
Run Code Online (Sandbox Code Playgroud)
要么
activiteitn = parseFloat($("#m2activiteitn").val()); // convert to a float
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |