关于数组和求和问题的parseInt

时间:2014-10-17 16:05:14

标签: javascript jquery arrays

使用JQuery,我从复选框值填充数组。然后我创建了for循环遍历数组,将复选框值解析为整数,求和它们并将值赋给变量" total"。当我运行这个时,我得到的不是一个数字,我怀疑有什么东西可以用于循环。有人能告诉我这里我做错了什么。请原谅我,如果我的编码不是那么干净,我只是从JS开始。



// create array and push selected checkbox values to it
    var allVals = [];

    $('input:checkbox[name=brand]:checked').each(function() {
      allVals.push($(this).val());
      //allVals.map(number);
    });
       
    for (var i=0; i < allVals.length; i++) {
      var total
      allVals[i] = parseInt(allVals[i]); 
      total += allVals[i] << 0;
      alert(total);
    }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

您在total内声明for,因此每次都会重置 - 我稍微修改了您的代码,但这应该有效:

var numbers = $('input:checkbox[name=brand]:checked').map(function() {
    return isNaN(this.value) ? 0 : this.value;
}).get();

var total = 0;

for (var i = 0; i < numbers.length; i++) {
    total += numbers[i];
}

alert(total);

答案 1 :(得分:0)

可能很简单:

&#13;
&#13;
$('[type=checkbox]').on('click', sum);
  
function sum(e) {
  var total = $('[type=checkbox]:checked')
               .toArray()
               .reduce( function (a,b) {return a + +b.value;}, 0 );
  $('[data-sum]').attr('data-sum', total.toFixed(2));
}
&#13;
[data-sum] {
  border-top: 1px solid #c0c0c0;
  width: 100px
}

[data-sum]:before {
   content: '\03A3  'attr(data-sum);
  padding-left: 4px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" value="23.23"> 23.23<br>
<input type="checkbox" value="3.33"> 3.33<br>
<input type="checkbox" value="15.00"> 15.00<br>
<input type="checkbox" value="1101.22"> 1101.22<br>
<input type="checkbox" value="78.10"> 78.10<br>
<input type="checkbox" value="122.05"> 122.05<br>
<input type="checkbox" value="435.00"> 435.00<br>
<div data-sum="0"></div>
&#13;
&#13;
&#13;

答案 2 :(得分:-2)

首先你需要在for循环之外创建总变量 然后将其初始化为零

var total = 0;

for (var i=0; i < allVals.length; i++) {

  allVals[i] = parseInt(allVals[i],10); 
  total += allVals[i];
  console.log(total);
}

第二因为您要为未初始化的变量添加数字 你得到了NaN的结果

例如

var c;
c +=1; //this will be NaN(not a numeric number)

原因是当你初始化变量时,JavaScript知道正确的数据类型
应该给那个变量