Javascript中的Switch语句不是切换

Switch Statement in Javascript isn't switching

本文关键字:语句 中的 Switch Javascript      更新时间:2023-09-26

这个switch语句有什么问题?我将从选项/值为1或2的选择菜单中选择这个值。当输入字段应该是"$1500"时,它一直只显示"1"

$('[name="costfield"]').change(function(){
    var cost = this.value;
    switch(cost){
        case 1:
            cost = "$1500";
            break;
        case 2:
            cost = "$2500";
            break;
    }
    $('#exampleInputEstimate1').val(cost);
});

在case语句中使用字符串- https://jsfiddle.net/3ujg7kr8/

$('[name="costfield"]').change(function(){
    var cost = this.value;
    switch(cost){
        case '1':
            cost = "$1500";
            break;
        case '2':
            cost = "$2500";
            break;
    }
    $('#exampleInputEstimate1').val(cost);
});

switch语句根据MDN使用严格比较

我建议在这种情况下使用字符串

当您从输入中检索值时,您将获得字符串,即'1'或'2'。因此,您必须将其解析为整数或浮点数:

替换:

var cost = this.value;

:

var cost = parseInt(this.value, 10);

另一个解决方案是枚举switch/case中的字符串,因为它已经指向:

switch(cost){
    case '1':
        cost = "$1500";
        break;
    case '2':
        cost = "$2500";
        break;
    default:
        break;
}

顺便说一下,养成在switch语句中编写默认大小写的习惯