Javascript 我可以对表中的每一行进行合计,然后用复选框禁用它吗?
我的代码有点问题。问题是当我使用Javascript 我可以对表中的每一行进行合计,然后用复选框禁用它吗?,javascript,jquery,Javascript,Jquery,我的代码有点问题。问题是当我使用each()时,它从第一个单元格循环到行的末尾,并从中获取每个值。 我只想让它从每一行中得到值,然后当我给它一个特定的数字时,它将计算总数,并在行的末尾打印。 当我单击复选框时,输入将被启用,当我再次单击时,它将被禁用,its中的文本以及总和也将消失 函数de(){ document.getElementById('check1')。onchange=function(){ document.getElementById('text1').disabled=!t
each()
时,它从第一个单元格循环到行的末尾,并从中获取每个值。
我只想让它从每一行中得到值,然后当我给它一个特定的数字时,它将计算总数,并在行的末尾打印。
当我单击复选框时,输入
将被启用,当我再次单击时,它将被禁用,its中的文本以及总和也将消失
函数de(){
document.getElementById('check1')。onchange=function(){
document.getElementById('text1').disabled=!this.checked;
};
document.getElementById('check2')。onchange=function(){
document.getElementById('text2').disabled=!this.checked;
};
}
$(文档).ready(函数(){
$(“输入:文本”).change(函数(){
var总和=0;
$(“#productbody tr”)。每个(函数(索引,tr){
var-price=$(tr.find(“td:eq(2)”).text();
变量金额=$(“输入:文本”).val();
if($(“输入:文本”).val()>0){
金额=parseInt(价格)*金额;
元(tr.find)(td:eq(4)).text(tong);;
}
});
});
});代码>
产品
价格
数量
全部的
iPhone9
700
三星之星
1500
请尝试以下代码
$(document).ready(function() {
$("#productbody tr").find("input:text").change(function() {
var tong = 0;
var price = $(this).closest('tr').find("td:eq(2)").text();
var amount = $(this).val();
if (amount > 0) {
tong = parseInt(price) * amount;
$(this).closest('tr').find("td:eq(4)").text(tong);
}
});
});
小提琴:你对每个人的要求应该是这样的
$(document).ready(function() {
$(“输入:文本”).change(函数(){
您的问题是,当只有一行的数量发生变化时,您不必要地对所有行进行迭代。您在这里查看的是计算的上下文:在这种情况下,上下文是最接近的
元素,您希望仅使用该行中的信息执行计算
因此,在输入的更改事件中,您只需要:
获取父表行。这是通过使用$(This.closest('tr')
从行的正确列中获取价格和金额。您可以使用一元运算符+
将字符串转换为数字,而不是使用parseInt()
这应该起作用:
$(文档).ready(函数(){
$(“输入:文本”).change(函数(){
var$row=$(this.closest('tr');
var$total=$row.find('td:eq(4)');
var price=+$row.find('td:eq(2)').text();
var金额=+此值;
$total.text(价格*金额);
});
});
产品
价格
数量
全部的
iPhone9
700
三星之星
1500
函数de(){
document.getElementById('check1')。onchange=function(){
document.getElementById('text1').disabled=!this.checked;
};
document.getElementById('check2')。onchange=function(){
document.getElementById('text2').disabled=!this.checked;
};
}
$("#productbody tr").each(function(index, tr) {
var tong = 0;
var price = $(tr).find("td:eq(2)").text();
var amount =parseInt($(tr).find("input:text").val());
if (amount > 0) {
tong = parseInt(price) * amount;
$(tr).find("td:eq(4)").text(tong);
}
});
});
});