在for循环中显示计数器


Jquery show counter in for loop

我使用foreach循环(php)在循环中使用jQuery for-loop

这是我的代码

foreach($products as $product):
?>
  var qty = $('#product_<?= $product->id ?>').val();
  var i;
  for (i = 0; i < qty; ++i) {
    //remove Item from list
    // alert(i);
    $('#delete_[<?=$product->id?>]['+ i +']').click(function(){
      swal({
          title: "<?= __('Do you really want to delete order No. {0}?', [$product->id]); ?>",
          type: "warning",
      }, function(isConfirm){
          if (isConfirm) {
            alert('delete me');
          }
          else {
              swal("<?= __('The order is canceled') ?>", " ", "error");
          }
      });
    });
    $(wrapper).append(
      ...
      '<div class="actions corner">' +
            '<a id="delete_[<?=$product->id?>]['+ i +']" title="<?= __("Cancel order") ?>" class="user-action-button-delete">' +
                '<i class="zmdi zmdi-delete"></i>' +
            '</a>'+
        '</div>'+
        ...
    );
  }
<?php
endforeach;
?>

循环正在工作,但由于某种原因,我没有得到div #delete_[1]['+ I ']在//remove Item from list中的第二次元的值

在此代码下的"包装"元素是相同的过程/逻辑,我得到"I"的值

为什么浏览器解析i喜欢i而不喜欢counter?

thx


再举一个例子

有相同的代码和相同的错误

//Start delete block
<?php
foreach($products as $product):
?>
ar qty = parseFloat($('#product_<?= $product->id ?>').val());
 var i = 0;
 for (i = 0; i < qty; ++i) {
    //Start remove Item from list
       var delete_div = $('#delete-<?=$product->id?>-'+ i);
       var delete_element = $('#preselected-<?=$product->id?>-'+ i);
            delete_div.on('click', function(){
                 swal({
                    title: "<?= __('Do you really want to delete product No. {0}?', [$product->name]); ?>",
                      type: "warning",
                      showCancelButton: true,
                              confirmButtonColor: "#DD6B55",
                              confirmButtonText: "<?= __('OK'); ?>",
                              cancelButtonText: "<?= __('Cancel'); ?>",
                              closeOnConfirm: true,
                              closeOnCancel: true
                          }, function(isConfirm){
                              console.log(i);
                          });
                        });
                      }
                  <?php
                  endforeach;
                  ?>

当前qty正在从您的输入中获取值,您正在使用它来创建循环的上限。这是假设输入或其他元素具有value属性。如果不是,你需要使用。text()或。html()。

但是即使它是一个输入- qty将是一个字符串-即使一个数字输入返回一个字符串值从。val(),所以你需要将值解析成一个数字,以便能够使用作为迭代计数。所以i不是问题-它只是没有增加,因为qty不是一个数字。

var qty = parseInt($('#product_<?= $product->id ?>').val());

var qty = parseFloat($('#product_<?= $product->id ?>').val());

那么qty将是一个可以在for循环中使用的数字:

 for (i = 0; i < qty; ++i) {...