Javascript 使用for循环和函数计算表上的行总数
我认为这应该很简单,但就是做不好……我试图在一个具有递增ID的表上获取行总数,如: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
<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()));
});
}