如何使用PHP数据中的循环执行javascript/jquery计算?

如何使用PHP数据中的循环执行javascript/jquery计算?,php,javascript,jquery,Php,Javascript,Jquery,我在我的PHP文件中创建了一个循环,生成10行。每行有四个方框,下面是总计 该场景是,当用户输入数量和价格时,使用jQuery自动更改总数,同时也更改总计。与第2行相同。我的问题是,我无法从我的PHPinput字段访问id 以下是我所做的: for($i = 1; $i < 11; $i++){ echo "<!-- ITEM {$i} -->"; echo "<tr>"; echo "<td><input type=

我在我的PHP文件中创建了一个循环,生成10行。每行有四个方框,下面是总计

该场景是,当用户输入数量和价格时,使用jQuery自动更改总数,同时也更改总计。与
第2行
相同。我的问题是,我无法从我的PHP
input
字段访问
id

以下是我所做的:

for($i = 1; $i < 11; $i++){
    echo "<!-- ITEM {$i} -->";
    echo "<tr>";
       echo "<td><input type='text' name='qty{$i}' class='k-textbox' id='qty{$i}'></td>";
       echo "<td><input type='text' name='item{$i}' class='k-textbox' id='item{$i}'></td>";
       echo "<td><input type='text' name='price{$i}' class='k-textbox' id='price{$i}'></td>";
       echo "<td><input type='text' name='total{$i}' class='k-textbox' id='total{$i}'></td>";
    echo "<tr>";
}
<tr>
   <td>GRAND TOTAL</td>
   <td><input type='text' name='gtotal' value='0.00' id='gtotal' class='k-textbox' />
</tr>
($i=1;$i<11;$i++)的
{
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
}
总计
这是我的jQuery代码:

var x = 0;

for(x = 1; x < 11; x++){
  $('#qty'+x, '#price'+x).on('input',function() {
     var qty = parseInt($('#qty'+x).val());
     var price = parseFloat($('#price'+x).val());
      $('#total'+x).val((qty * price ? qty * price : 0).toFixed(2));
  });
}
var x=0;
对于(x=1;x<11;x++){
$('数量'+x','价格'+x).on('输入',函数(){
var qty=parseInt($('#qty'+x).val());
var price=parseFloat($('#price'+x).val());
$(#total'+x).val((数量*价格?数量*价格:0).toFixed(2));
});
}

就这些。我希望您能帮助我。

我可能没有正确理解这个问题,但为什么不让PHP计算总计,然后将值放入总计?

首先生成html,如下所示,让我们使用类附加触发器,并定义一个名为
数据类型
的自定义类型以进行测试,还可以添加
数据行
,以跟踪您所在的行

for($i = 1; $i < 11; $i++){
    echo "<tr>";
       echo "<td><input type='text' data-row='{$i}' data-type='qty' name='qty{$i}' class='k-textbox' id='qty{$i}'></td>";
       echo "<td><input type='text' data-row='{$i}' data-type='item' name='item{$i}' class='k-textbox' id='item{$i}'></td>";
       echo "<td><input type='text' data-row='{$i}' data-type='price' name='price{$i}' class='k-textbox' id='price{$i}'></td>";
       echo "<td><input type='text' data-row='{$i}' data-type='total' name='total{$i}' class='k-textbox' id='total{$i}'></td>";
    echo "<tr>";
}
($i=1;$i<11;$i++)的
{
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
}
然后让我们在不需要冗余循环的情况下处理jquery

<script type="text/javascript">
   $(function () {
          $(".k-textbox").input(function (evt) {
               var that = $(this);
               if (that.attr('data-type') != 'price' && that.attr('data-type') != 'qty) return;
               var row = that.attr('data-row');
               var qty = parseInt($('#qty'+row).val());
               var price = parseFloat($('#price'+row).val());
               $('#total'+row).val((qty * price ? qty * price : 0).toFixed(2));
          });
    });
</script>

$(函数(){
$(“.k-textbox”).input(函数(evt){
var,该值=$(此值);
如果(that.attr('data-type')!='price'和&that.attr('data-type')!='qty)返回;
var row=that.attr('data-row');
var qty=parseInt($('#qty'+行).val());
var price=parseFloat($('#price'+row.val());
$(“#总计”+行).val((数量*价格?数量*价格:0).toFixed(2));
});
});

没有
输入
事件

很容易获得
id
属性,您真正需要做的是添加
$(documnet).ready(..)
并将
输入
事件替换为
更改
事件

因此,更新js代码:

更新:我错误地使用了
#选择器
,并将其更新为
[id^=…]

$(document).ready(function(){
    // well,$('selector1,selector2')  not  $('selector1','selector2')
    $('[id^=qty] , [id^=price]').on('change',function() {
        var index=this.id.match(/\d+/)[0];
        var qty = parseInt($('#qty'+index).val());
        var price = parseFloat($('#price'+index).val());
        $('#total'+index).val((qty * price ? qty * price : 0).toFixed(2));
    });
});

你的问题是…?我很困惑。。。无论如何,为什么需要PHP从输入字段访问ID?PHP不是定义ID的人吗?问题很简单,有一种更好的方法可以做到这一点,我需要jquery输入的ID。还有其他方法来执行这个逻辑吗?你去检查我的答案,它不那么混乱,也没有javascript循环,因为我想在我的客户端中执行它。@user2585508这是因为我犯了一个错误,尝试使用
parseInt
但是得到了
NaN
。我已经将
parseInt
替换为正则表达式。我认为它可以工作。试试看。仍然不工作。你有电子邮件吗,这样我就可以把我的全部代码发给你?请告诉我y的错误是什么。@user2585508zhang6464@gmail.com