Jquery 如果有效,则不切换

Jquery 如果有效,则不切换,jquery,Jquery,我需要你的帮助。 我不知道为什么,但IF工作,开关不工作。 警报输出“undefined”而不是值“paga”,但对我来说一切似乎都正常 有人能帮我吗? 非常感谢您您必须在切换之前定义var paga,并使numeri\u giocatinumeric 像这样: $(document).ready(function() { $('input[name=submit]').click(function() { var importo_estratto = $('input[

我需要你的帮助。 我不知道为什么,但IF工作,开关不工作。 警报输出“undefined”而不是值“paga”,但对我来说一切似乎都正常

有人能帮我吗?
非常感谢您

您必须在切换之前定义
var paga
,并使
numeri\u giocati
numeric

像这样:

$(document).ready(function() {
    $('input[name=submit]').click(function() {
        var importo_estratto = $('input[name=importo_estratto]').val();
        var numeri_giocati = $('input[name=numeri_giocati]').val();

        // ESTRATTO
        if (importo_estratto != '') {
            switch(numeri_giocati) {
                case 1: paga = 11.23; break;
                case 2: paga = 5.62; break;
                case 3: paga = 3.74; break;
                case 4: paga = 2.81; break;
                case 5: paga = 2.25; break;
                case 6: paga = 1.87; break;
                case 7: paga = 1.60; break;
                case 8: paga = 1.40; break;
                case 9: paga = 1.25; break;
                case 10: paga = 1.12; break;
            }

            /*if (numeri_giocati == 1) {
                var paga = 11.23;
            } else if (numeri_giocati == 2) {
                var paga = 5.62;
            } else if (numeri_giocati == 3) {
                var paga = 3.74;
            } else if (numeri_giocati == 4) {
                var paga = 2.81;
            } else if (numeri_giocati == 5) {
                var paga = 2.25;
            } else if (numeri_giocati == 6) {
                var paga = 1.87;
            } else if (numeri_giocati == 7) {
                var paga = 1.60;
            } else if (numeri_giocati == 8) {
                var paga = 1.40;
            } else if (numeri_giocati == 9) {
                var paga = 1.25;
            } else if (numeri_giocati == 10) {
                var paga = 1.12;
            }*/

            alert(paga);
        } else {
            var tot_estratto = 0;
        }
        return false;
    });
});

JavaScript中的
switch
语句不执行类型转换

$(document).ready(function() {
    $('input[name=submit]').click(function() {
        var importo_estratto = $('input[name=importo_estratto]').val();
        var numeri_giocati = $('input[name=numeri_giocati]').val();

        // ESTRATTO
        var paga = 0;
        if (importo_estratto != '') {
            switch(+numeri_giocati) {
                case 1: paga = 11.23; break;
                case 2: paga = 5.62; break;
                case 3: paga = 3.74; break;
                case 4: paga = 2.81; break;
                case 5: paga = 2.25; break;
                case 6: paga = 1.87; break;
                case 7: paga = 1.60; break;
                case 8: paga = 1.40; break;
                case 9: paga = 1.25; break;
                case 10: paga = 1.12; break;
            }

            /*if (numeri_giocati == 1) {
                var paga = 11.23;
            } else if (numeri_giocati == 2) {
                var paga = 5.62;
            } else if (numeri_giocati == 3) {
                var paga = 3.74;
            } else if (numeri_giocati == 4) {
                var paga = 2.81;
            } else if (numeri_giocati == 5) {
                var paga = 2.25;
            } else if (numeri_giocati == 6) {
                var paga = 1.87;
            } else if (numeri_giocati == 7) {
                var paga = 1.60;
            } else if (numeri_giocati == 8) {
                var paga = 1.40;
            } else if (numeri_giocati == 9) {
                var paga = 1.25;
            } else if (numeri_giocati == 10) {
                var paga = 1.12;
            }*/

            alert(paga);
        } else {
            var tot_estratto = 0;
        }
        return false;
    });
});
或者


将numeri_giocati设置为数值,将其视为字符串,开关与数字不匹配。您可以通过一元+运算符将其设置为数字。您还可以使用
parseFloat()
parseInt()
代替一元加号

var foo = parseInt(numeri_giocati);
switch(foo) {
    case 1: paga = 11.23; break;
    case 2: paga = 5.62; break;
    case 3: paga = 3.74; break;
    case 4: paga = 2.81; break;
    case 5: paga = 2.25; break;
    case 6: paga = 1.87; break;
    case 7: paga = 1.60; break;
    case 8: paga = 1.40; break;
    case 9: paga = 1.25; break;
    case 10: paga = 1.12; break;
}
算法解 没有人注意到,使用规定的
paga
值,可以使用算法解决方案

对于numeri_giocati>0,
paga
的值由以下公式给出:

  • paga=11.23/数字
算法给出了正确的值(数字区域=1到10的小数点后2位)

该算法可以通过javascript函数
genPaga(seme,n)
实现,其中seme是种子(或标量)值11.23,n是正整数

因此,问题中的代码变为:

switch(+numeri_giocati) {
                case 1: paga = 11.23; break;
                case 2: paga = 5.62; break;
                case 3: paga = 3.74; break;
                case 4: paga = 2.81; break;
                case 5: paga = 2.25; break;
                case 6: paga = 1.87; break;
                case 7: paga = 1.60; break;
                case 8: paga = 1.40; break;
                case 9: paga = 1.25; break;
                case 10: paga = 1.12; break;
            }
这种方法的优点是,您不局限于switch/case语句中硬编码的值的范围。假设有一天你希望满足numeri_giocati=11、12、13等的需求,算法会自动处理。如果需要,还可以在代码的其他地方调用函数
genPaga()


限制是您受到算法的约束。如果算法不可用(或无法推导),那么开关/案例可能是唯一的选择。

您应该定义paga并在开关中添加默认值。它是否适用于
案例“1”:
…?我没有给出答案,我建议这样做。是的,在您从@adil获取隐式转换位之后。在切换之前定义
var paga
不是问题。它只是重新定义变量
paga
。我想问
隐式强制转换有什么问题
隐式强制转换没有问题。你在编辑答案以包含它之前获得了否决票(事实上答案是错误的)。@Xander:这非常好,而且并非所有意图和目的都是含蓄的。(我的意思是,一元
+
运算符除了cast之外什么都不做,所以…+1很好的cast方法,真的不是隐式的,因为您(显式地使用
+
运算符进行转换)谢谢!谁能解释一下什么是“隐性演员”?我还尝试了@Xander的解决方案,效果很好,那么真正的问题是什么呢?隐式/显式转换-是的,他只是帮你用谷歌搜索了一下。这是他试图给你一个关于如何处理这些(简单)问题的提示。谢谢!然而,我想知道真正的问题是什么:“隐式转换”还是类型转换?伙计,你是世界上最聪明的人!!非常感谢你!!我们,我一直都知道。别人花了一生中最好的时间才注意到这一点。:)
var foo = parseInt(numeri_giocati);
switch(foo) {
    case 1: paga = 11.23; break;
    case 2: paga = 5.62; break;
    case 3: paga = 3.74; break;
    case 4: paga = 2.81; break;
    case 5: paga = 2.25; break;
    case 6: paga = 1.87; break;
    case 7: paga = 1.60; break;
    case 8: paga = 1.40; break;
    case 9: paga = 1.25; break;
    case 10: paga = 1.12; break;
}
switch(+numeri_giocati) {
                case 1: paga = 11.23; break;
                case 2: paga = 5.62; break;
                case 3: paga = 3.74; break;
                case 4: paga = 2.81; break;
                case 5: paga = 2.25; break;
                case 6: paga = 1.87; break;
                case 7: paga = 1.60; break;
                case 8: paga = 1.40; break;
                case 9: paga = 1.25; break;
                case 10: paga = 1.12; break;
            }
$(document).ready(function() {
    function genPaga(seme, n) {
        return (seme / n).toFixed(2);
    }

    $('input[name=submit]').click(function() {
        var importo_estratto = $('input[name=importo_estratto]').val();
        var numeri_giocati = parseInt($('input[name=numeri_giocati]').val(), 10);
        var paga, tot_estratto;//??
        if (importo_estratto != '' && !isNaN(numeri_giocati) && numeri_giocati >= 1) {
            paga = genPaga(11.23, numeri_giocati);
        } else {
            tot_estratto = 0;
        }
        return false;
    });
});