1

我有一个对话框,对话框中有动态按钮。在每个按钮中,$.get()都会生成 a。

文件的路径部分是可变的,函数(将在成功时执行)也是可变的。

但我无法让它工作。控制台说变量是undefined. 我知道为什么,因为它在一个function. 但是我在全局范围内设置了变量。

谁能解释我如何让这些变量起作用?

我将提供我的源代码,以便您了解我的意思。


源代码

    var dialog_buttons = {};

    for(var i=0;i<socialMediaServ.length;i++)
    {
        dialog_buttons["Upload naar "+socialMediaServ[i]]= function()
        {
            $("#wait-dialog").dialog(
            {
                modal: true,
                resizable: false, 
                draggable: false,
                width:305,
                height:125,
                my:'center',
                at:'center',
                open: function(){}
            });

            $.get("../includes/social/"+socialMediaServ[i]+"/upload.php",{functie: "checkUser", fotonaam: fotoNaam}, window['users_'+socialMediaServ[i]+'_check'], 'json');
        }
    };
    dialog_buttons["Sluiten"]= function() 
    {
        $(this).dialog("close");
    };
    $("#dialog-foto").dialog("option", "buttons", dialog_buttons);
    $("#dialog-foto").dialog("open");

该变量socialMediaServ设置在我的页面顶部。socialMediaServ是一个数组:Facebook,Twitter

提前谢谢了!

4

1 回答 1

2

我确信我完全理解问题所在。我假设 $.get 中的 socialMediaServ[i] 值是未定义的。

我会尝试将每个数组值存储在循环范围内的变量中:

 for(var i=0;i<socialMediaServ.length;i++)
{
   (function(){
    dialog_buttons["Upload naar "+socialMediaServ[i]]= function()
    {
        $("#wait-dialog").dialog(
        {
            modal: true,
            resizable: false, 
            draggable: false,
            width:305,
            height:125,
            my:'center',
            at:'center',
            open: function(){}
        });

        $.get("../includes/social/"+socialMediaServ[i]+"/upload.php",{functie: "checkUser", fotonaam: fotoNaam}, window['users_'+socialMediaServ[i]+'_check'], 'json');
    }
  })(i);
};
于 2012-11-14T09:06:57.887 回答