我使用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) {...