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