而循环增量值在函数内部不起作用

while loop increment value not working inside a function

本文关键字:函数 内部 不起作用 循环      更新时间:2023-09-26

我有以下代码:

<?php
$i = 5;
while($i > 0){
echo "
<input type = 'submit' value = '$i' id = '$i'>
";
$i--;
}
?>
<script type = 'text/javascript' src = 'js/jquery.js'></script>
<script type = 'text/javascript'>
$(document).ready(function(){
var i = 5;
while(i > 0){
$('#'+i).live('click',function(){
alert(i);
});
i--;
}
});
</script>

当我点击一个按钮时,javascript应该提醒我点击的按钮的id。但我点击哪个按钮都会提醒0。我认为while循环的增量值在函数内部不起作用。我该怎么办?

这是因为一些变量i的闭包作用域。

$(document).ready(function(){
    var i = 5;
    while(i > 0){
        (function(idx){
            $('#'+idx).live('click',function(){
                alert(idx);
            });
        })(i)
        i--;
    }
});