Sum 和 Multiply 输出错误
Sum and Multiply output is wrong
我有 4 个字段需要求和,我用 sum up with $('select :selected').each(function() {
但是不知何故,下面的代码输出 99,而它需要输出 72。
// Count for ShowerCoins
$(document).ready(function() {
$('select.countForShowerCoins').on('change', function() {
var sum = 0;
$('select :selected').each(function() {
sum += Number($(this).val() * 3) * $('select[name=howManyNights]').val();
});
$(".result").html(sum);
});
});
sum
就是“4个输入框,每个输入框的值为2”,加起来就是8。然后乘以 3,即 24,然后我将它乘以夜晚的数量,即 3。24 * 3 = 72。但不知何故,我得到了 99 的输出。
有人知道这是怎么回事吗,我错过了什么吗?我在 $('select[name=howManyNights]').val();
上使用了 parseInt(
但这并没有改变任何东西。我注意到这是因为 sum
因为当我用静态数字替换它时计算有效。
但是我不知道怎么解决。
您为每个输入字段乘以 Nights,因此结果不正确。请试试这个:
$(document).ready(function() {
$('select.countForShowerCoins').on('change', function() {
var sum = 0;
$('select :selected').each(function() {
sum += Number($(this).val() * 3);
});
if (sum > 0) {
sum *= $('select[name=howManyNights]').val();
}
$(".result").html(sum);
});
});
我想您可能遇到了操作顺序问题。根据您的描述,您希望 sum
输入 THEN x 3 x nights
。另外 $('select[name=howManyNights]')
是 select
,因此它会包含在 $(select :selected).each()
中,这可能是您得到意外输出的原因。
我在猜测您的其余代码是什么样子,但希望这会有所帮助:
$('select.countForShowerCoins').on('change', function() {
let sum = 0
$('select.countForShowerCoins').each(function() { sum += Number(this.value); })
$(".result").html(sum * 3 * Number($('select[name="howManyNights"]').val()));
});
https://jsfiddle.net/t2jdsk0q/1/
这具有您给定输入的预期输出。
旁注:
Number($(this).val() * 3)
应该是 Number($(this).val()) * 3
.
幸运的是 javascript 将字符串强制转换为 division/multiplication/subraction 的数字,而不是加法。
即2 * '3' = 6
但 2 + '3' = '23'
我有 4 个字段需要求和,我用 sum up with $('select :selected').each(function() {
但是不知何故,下面的代码输出 99,而它需要输出 72。
// Count for ShowerCoins
$(document).ready(function() {
$('select.countForShowerCoins').on('change', function() {
var sum = 0;
$('select :selected').each(function() {
sum += Number($(this).val() * 3) * $('select[name=howManyNights]').val();
});
$(".result").html(sum);
});
});
sum
就是“4个输入框,每个输入框的值为2”,加起来就是8。然后乘以 3,即 24,然后我将它乘以夜晚的数量,即 3。24 * 3 = 72。但不知何故,我得到了 99 的输出。
有人知道这是怎么回事吗,我错过了什么吗?我在 $('select[name=howManyNights]').val();
上使用了 parseInt(
但这并没有改变任何东西。我注意到这是因为 sum
因为当我用静态数字替换它时计算有效。
但是我不知道怎么解决。
您为每个输入字段乘以 Nights,因此结果不正确。请试试这个:
$(document).ready(function() {
$('select.countForShowerCoins').on('change', function() {
var sum = 0;
$('select :selected').each(function() {
sum += Number($(this).val() * 3);
});
if (sum > 0) {
sum *= $('select[name=howManyNights]').val();
}
$(".result").html(sum);
});
});
我想您可能遇到了操作顺序问题。根据您的描述,您希望 sum
输入 THEN x 3 x nights
。另外 $('select[name=howManyNights]')
是 select
,因此它会包含在 $(select :selected).each()
中,这可能是您得到意外输出的原因。
我在猜测您的其余代码是什么样子,但希望这会有所帮助:
$('select.countForShowerCoins').on('change', function() {
let sum = 0
$('select.countForShowerCoins').each(function() { sum += Number(this.value); })
$(".result").html(sum * 3 * Number($('select[name="howManyNights"]').val()));
});
https://jsfiddle.net/t2jdsk0q/1/ 这具有您给定输入的预期输出。
旁注:
Number($(this).val() * 3)
应该是 Number($(this).val()) * 3
.
幸运的是 javascript 将字符串强制转换为 division/multiplication/subraction 的数字,而不是加法。
即2 * '3' = 6
但 2 + '3' = '23'