1

ダイアログがあります。ダイアログには動的ボタンがあります。すべてのボタンで、a$.get()が生成されます。

ファイルへのパスは部分的に可変であり、関数(成功すると実行されます)も可変です。

しかし、私はそれを機能させることができません。コンソールは、変数がであると言います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 に答える