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' = 62 + '3' = '23'