Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用for循环和函数计算表上的行总数_Javascript_Jquery - Fatal编程技术网

Javascript 使用for循环和函数计算表上的行总数

Javascript 使用for循环和函数计算表上的行总数,javascript,jquery,Javascript,Jquery,我认为这应该很简单,但就是做不好……我试图在一个具有递增ID的表上获取行总数,如: <table id="myTable" class="form"> <thead> <tr> .... </tr> </thead> <tbody> <tr class=""> <td> <input type="number" name="q

我认为这应该很简单,但就是做不好……我试图在一个具有递增ID的表上获取行总数,如:

<table id="myTable" class="form">

  <thead>
    <tr>
    ....  
    </tr>
  </thead>

  <tbody>
   <tr class="">
    <td>
      <input type="number" name="quantity" id="item-0-quantity">
    </td>

    <td>
       <input type="number" name="unit_price"id="item-0-unit_price">
    </td>

    <td>

    <td>
      <input type="number" name="quantity" id="item-1-quantity">
    </td>

    <td>
       <input type="number" name="unit_price"id="item-1-unit_price">
    </td>

    ...etc                     
    <td>                        
  </tr>
  </tbody>
</table>
……等等

我认为我最好使用For循环来迭代并基于行计数器更新I的值,如:

  var rowCounter = $("#myTable tr").length - 1;

    for (var i = 0; i <= rowCounter; i++) {

    $('#item-'+i+'-quantity, #item-'+i+'-unit-price').on('input',function(e){
        $('#Total').val(parseFloat($('#item-'+i+'-quantity').val()) * parseFloat($('#item-'+i+'-unit-price').val()));

    });
    }
var rowCounter=$(“#myTable tr”).length-1;

对于(var i=0;i,因为要求和的内容用“数量”和“单价”
name
属性标识,所以可以使用以下方法:

$('tr').each(function() {
  sum += $('input[name="quantity"]', this).val() * $('input[name="unit_price"]', this).val();
})
选择器中的第二个参数(
this
在本例中)为jQuery提供了一个用于搜索的参数,即表中的每一行

下面是代码片段:

$(“#计算”)。单击(函数(){
var总和=0;
$('tr')。每个(函数(){
sum+=$('input[name=“quantity”]”,this.val()*$('input[name=“unit_price”]”,this.val();
})
$(“#结果”)。文本(总和);
});

结果:
试试这个:

//按名称循环
$(“输入[名称=数量],输入[名称=单价]”)。在('input',函数(){
var合计=0;
$(“输入[名称=数量]”)。每个(函数(即,e){
total+=$(this.val()*$(e).closest(“tr”).find(“输入[名称=单价]”)).val();
});
$('总计').val(总计);
});
//按表循环
$(“#myTable input[type=number]”)。on('input',function(){
var合计=0;
$(“#myTable tr”)。每个(函数(即,e){
如果(document.getElementById(“item-”+i+“-quantity”)和&document.getElementById(“item-”+i+“-unit_price”){//只需检查元素是否存在
总计+=$(e).查找(“#项目-”+i+“-数量”).val()*$(e).查找(#项目-“+i+”-单价”).val();
}
});
$('Total_by_table_rows').val(总计);
});

总数:
按表行列出的总计:

在这里,您可以这样做

由于以下原因,您的代码无法工作:

var rowCounter = $("#myTable tr").length - 1;
for (var i = 0; i <= rowCounter; i++) {
    $('#item-'+i+'-quantity, #item-'+i+'-unit-price').on('input',function(e){
       $('#Total').val(parseFloat($('#item-'+i+'-quantity').val()) * parseFloat($('#item-'+i+'-unit-price').val()));
    });
}
td{
宽度:80%;
浮动:左;
左边距:10px;
}
标签{
宽度:20%;
浮动:左
}

数量1
单价1
数量1
单价1
全部的

为什么
i
从1开始使用一个公共类并进行迭代怎么样?不需要添加太多额外的代码这个方法会起作用,但是我的表是由后端python模块生成的,我无法控制表的定义方式。我只想能够对行进行迭代,因为每个行的id中都有一个0,1,2,3。谢谢谢谢你的回答。我会做一些修改then@Jay我已经做了一些修改,看看这是否在你的CaseHiJayb中,如果这个或任何答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明你已经找到了解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
var rowCounter = $("#myTable tr").length - 1;
for (var i = 0; i <= rowCounter; i++) {
    $('#item-'+i+'-quantity, #item-'+i+'-unit-price').on('input',function(e){
       $('#Total').val(parseFloat($('#item-'+i+'-quantity').val()) * parseFloat($('#item-'+i+'-unit-price').val()));
    });
}