所以我使用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;
?>
答案 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) {...