8

我有几行需要迭代的输入框(文本),将一行中的值相乘,然后对乘积求和。我能找到的唯一解决方案是将输入框转换为数组:

var array1 = $('input[id$="txtVal1"]').toArray();
var array2 = $('input[id$="txtVal2"]').toArray();
var temp1;
var temp2;
var sum=0;

然后使用以下方法迭代和求和:

for (i = 0; i < array1.length; i++) {
    if (array1[i].value.length > 0) { //make sure we have data
        temp1 = parseFloat(array1[i].value);
        temp2 = parseFloat(array2[i].value);
        sum += temp1 * temp2;
    }
}

这行得通。但是我只是在学习 JQuery 并想使用规范方法。

4

3 回答 3

12

您可以直接遍历通过选择器找到的所有项目,如下所示:

$('input').each(function(index,data) {
   var value = $(this).val();
});
于 2013-03-27T15:35:56.950 回答
3

As mentioned you can use .each() to accomplish this task but here is an example that uses your data as requested in the the question. You mentioned 'rows' of input so I'm assuming it's in a table row:

$('tr').each(function () {
    var $this = $(this),
        sum = parseFloat($this.find('input[id$="txtVal1"]').val()) * parseFloat($this.find('input[id$="txtVal2"]').val());
    alert(sum);
});

Here's a jsFiddle Example

于 2013-03-27T15:53:43.710 回答
2

不需要使用toArray,使用.each()方法。

$('input[id$="txtVal1"]').each(function(index) { 
    // do something here
    $(this).addClass( "myClass" );
})
于 2013-03-27T15:35:01.590 回答