Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 我可以对表中的每一行进行合计,然后用复选框禁用它吗?_Javascript_Jquery - Fatal编程技术网

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);
    
        }
       });
     });
    });