Jquery在for循环中显示计数器

时间:2016-10-18 07:05:24

标签: php jquery

所以我使用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'] //从列表中移除项目

在这个代码中,“wrapper”元素是相同的进程/逻辑,我正在获得“i”的价值

为什么浏览器解析我喜欢我而不喜欢反击?

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;
                  ?>

1 个答案:

答案 0 :(得分:0)

目前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) {...