<input type="text" name="importo_estratto" />
<input type="text" name="numeri_giocati" />
<input type="submit" id="submit" name="submit" />
$(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;
});
});
我需要你的帮助。 我不知道为什么,但IF工作和SWITCH没有。 警报输出“未定义”而不是值“paga”,但一切似乎都适合我。
有人可以帮帮我吗? 非常感谢你
答案 0 :(得分:6)
使numeri_giocati数字,它被视为字符串,并且开关无法与数字匹配。您可以通过一元+运算符对其进行编号。您也可以使用parseFloat()
或parseInt()
,而不是使用一元加号。
<强> Live Demo 强>
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;
}
答案 1 :(得分:2)
switch
语句不执行类型转换。
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;
}
或者,
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;
}
答案 2 :(得分:2)
没有人注意到,使用paga
的规定值,可以使用算法解决方案。
对于numeri_giocati&gt; 0,paga
的值由公式给出:
Here's my verification该算法给出了正确的值(在范围numri_giocati = 1到10的小数点后2位)。
该算法可以使用javascript函数genPaga(seme, n)
实现,其中seme是种子(或标量)值11.23,n是正整数。
问题中的代码因此变为:
$(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;
});
});
这种方法的优点是您不限于在switch / case语句中硬编码的值范围。假设有一天你想要照顾numeri_giocati = 11,12,13等算法将自动处理。如有必要,函数genPaga()
也可在代码中的其他位置调用。
限制是您受算法约束。如果算法不可用(或无法推断),那么开关/案例可能是唯一的选择。
答案 3 :(得分:0)
您必须在切换前定义var paga
并使numeri_giocati
数字
$(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;
});
});