Javascript jQuery遍历元素

Javascript jQuery遍历元素,javascript,jquery,html,Javascript,Jquery,Html,我有下面的HTML <div id="price_list"> <input type="text" value="100" class="input_price" /> <input type="text" value="256" class="input_price" /> <input type="text" value="500" class="input_price" /> <input type="text" value=

我有下面的HTML

<div id="price_list">
 <input type="text" value="100" class="input_price" />
 <input type="text" value="256" class="input_price" />
 <input type="text" value="500" class="input_price" />
 <input type="text" value="04.26" class="input_price" />
 <input type="text" value="156" class="input_price" />
 <input type="text" value="052" class="input_price" />
 <input type="text" value="692" class="input_price" />
 <input type="text" value="25.36" class="input_price" />
 <input type="text" value="10.56" class="input_price" />
</div>

在jQuery中,您可以直接执行以下操作:

var sum = 0;

$('.input_price').each(function(){
  var value = parseFloat(this.value);
  if(!isNaN(value)) sum += value;
});
你也可以。这将需要更长的时间,但不会冻结UI线程,因此您不会被卡住。在这里,它将1的数组相加到1000,但不会冻结浏览器

function loop(object,callback){
  var i = 0;
  var sum = 0;

  var timer = setInterval(function(){

    //get value and add
    var value = parseFloat(object[i].value);
    if(!isNaN(value)) sum += value;

    //if we reach the length, clear the timer and call the callback
    if(++i === object.length){
      clearInterval(timer);
      callback(sum);
    }
  },0);
}

loop($('.input_price'),function(sum){
  console.log(sum);
});

只因为您关心性能,所以请使用纯JavaScript和单个
for
循环:

var list = document.getElementById("price_list"),
    inputs = list.getElementsByTagName("input"),
    total = 0;

for (var i = 0, len = inputs.length; i < len; i++) {
    total += +inputs[i].value;
}

console.log(total);
var list=document.getElementById(“价格列表”),
inputs=list.getElementsByTagName(“输入”),
总数=0;
对于(变量i=0,len=inputs.length;i
以类作为输入值对所有元素求和

var elements = document.getElementsByClassName("input_price");
var sum = 0;
for(var i=0; i<elements.length; i++) {
    sum += parseFloat(elements[i].value);
}
var elements=document.getElementsByClassName(“输入价格”);
var总和=0;

对于(var i=0;i您应该发布如何使用
each
。向我们展示您尝试使用的代码可能是个好主意。each(),也许有人可以改进它。@pXL谢谢,添加到问题中。这是在page@ArunPJohny好的,是的。但是在不同的项目中。+1-思维良好,打字速度快,比我快了半分钟。@Red如果你想获得表演,那是最好的方法。@VisioN bee下面有一个较短的方法。你不认为这样更好吗呃。@optim没有。我的意思是既没有使用
getElementsByClassName
,也没有使用
querySelectorAll
,因为这些方法都不受旧浏览器的支持。@optim所有优秀的开发人员都应该担心。而且,我的方法在Chrome中速度更快。这在复杂的迭代中会失败。为什么。你能解释一下吗?我真的不知道性能在大型元素集上,最好使用纯javascript。
var sum=parseFloat(0);
Eh?为什么?
var list = document.getElementById("price_list"),
    inputs = list.getElementsByTagName("input"),
    total = 0;

for (var i = 0, len = inputs.length; i < len; i++) {
    total += +inputs[i].value;
}

console.log(total);
$('.input_price').each(function(){
    sum += parseFloat($(this).val());
});
var elements = document.getElementsByClassName("input_price");
var sum = 0;
for(var i=0; i<elements.length; i++) {
    sum += parseFloat(elements[i].value);
}