Javascript jQueryUI对话框只显示for循环的最后一次迭代

Javascript jQueryUI对话框只显示for循环的最后一次迭代,javascript,php,jquery,jquery-ui,dialog,Javascript,Php,Jquery,Jquery Ui,Dialog,我不知道我是不是瞎了,但每次我看这段代码时,逻辑都是有道理的。我试图迭代这个for循环,并为每个迭代生成一个ID为#dialog-(I)的对话框,但它只显示最后一次200次迭代。代码如下: var i; for(i=1;i<200;i++){ $("#dialog-" + i).hide(); $('#meetings_box-' + i).click(function() { var dialog = $("#dialog

我不知道我是不是瞎了,但每次我看这段代码时,逻辑都是有道理的。我试图迭代这个for循环,并为每个迭代生成一个ID为#dialog-(I)的对话框,但它只显示最后一次200次迭代。代码如下:

var i; 
    for(i=1;i<200;i++){
        $("#dialog-" + i).hide();
        $('#meetings_box-' + i).click(function() {
            var dialog = $("#dialog-" + i).dialog();
            if (dialog) {
                console.log('yay');
                console.log(dialog);
            } else {
                console.log('nay');
            }
        });
    };
vari;

对于(i=1;i这是因为
click
将在将来某个时候发生,此时循环已经完成执行,i的值更新为最后一个值。您可以使用
let

代替
var,这是因为
click
将在将来某个时候发生,此时循环已经读取y完成了它的执行,i的值被更新为最后一个值。您可以使用
let

代替
var
,我建议使用回调。在每次迭代后,您可以调用show,在该对话框回调中,您可以迭代更高的值。我建议使用回调。在每次迭代后,您可以调用show,然后继续对话回调你可以再重复一次。干杯,伙计,这帮我解决了问题。伙计,这帮我解决了问题