Javascript 切换错误大小写

标签 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,它也会跳转到default case,导致alert。如果我在案例 1 中发出警报,则该警报不会显示。我想到的第一件事是 activiteitn 不是 1,所以在切换之后我又放置了另一个警报:

        alert (activiteitn);

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

最佳答案

.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

关于Javascript 切换错误大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16815015/

相关文章:

javascript - 如何将一种 Backbone 模型与另一种 Backbone 模型关联起来?

javascript - 滚动并放大 morris 图表数据已折叠

javascript - javascript 中表单提交的事件监听器,无提交操作

javascript - 禁用从另一种形式到另一种形式的按钮时出现问题

jquery - 获取 JSON 响应的总数

javascript - 连接多级对象以进行过滤

javascript - javascript 中的 C# DateTime.MaxValue 等效项

Datagridview 单元格的 C# Switch-case 循环

javascript - JavaScript 中的条件组合

java - 循环不会结束。我该如何让它退出?