0

Facebook API を使用してユーザーからすべてのグループを取得し、FQL を使用して別の関数を使用してグループごとに異なる div を作成し、各 div に別のページにリンクするボタンを割り当てます。

$('.groupButton').click(function() {  
  window.location ='anotherpage.html?groupid=' + groupid;
});

ただし、すべてのボタンで、最後のボタンのグループ ID が割り当てられます。どこが間違っているのかわからない。

2つの機能:

        function getGroupsIds(){
            document.getElementById('content_text').innerHTML = "";
            FB.api('/me/groups',function(resp){
                for (var i=0, l=resp.data.length; i<l; i++){ 
                getGroupInfo(resp.data[i].id);
                }
            });
        }


        function getGroupInfo(groupid){
            FB.api({
                method: 'fql.query',
                query: 'Select name, description, gid, pic_cover from group where gid=' + groupid
            }, function(resp){
                var content_text = document.getElementById('content_text');
                var group = new Array(); 
                for (var i=0, l=resp.length; i<l; i++) 
                {


                    groupinput = document.createElement('button');
                    groupinput.className = "groupButton";            
                    groupinput.innerHTML = "Vizualise";

                    $('.groupButton').click(function() {  
                    window.location ='pages/appviz.html?groupid=' + groupid;
                    });


                    groupdiv.appendChild(groupinput);
                    content_text.appendChild(groupdiv);

                }
            });
    }
4

4 に答える 4

1

グループIDはどこから取得しますか?それは明らかではありません。ボタンのグループ ID を ID として割り当てることができます。次に、ボタンをクリックしたときに値を取得します。

$('.groupButton').click(function() {
groupid = this.id;
window.location ='anotherpage.html?groupid=' + groupid;
});

そして、入力は次のようになります

<input type='button' id='1' value='Profile' class='groupButton' />

これがあなたを助けることを願っています。

于 2013-04-23T17:40:59.537 に答える
0

ほとんどの場合、ループ内から次のコードを削除するだけです

 $('.groupButton').click(function() {  
                window.location ='pages/appviz.html?groupid=' + groupid;
                });

function getGroupInfo(groupid)クリック関数はアクションを実行するだけなので、function の外に置きます。試してみて、うまくいったかどうかをお知らせください。

function getGroupInfo(groupid){
            FB.api({
                method: 'fql.query',
                query: 'Select name, description, gid, pic_cover from group where gid=' + groupid
            }, function(resp){
                var content_text = document.getElementById('content_text');
                var group = new Array(); 
                for (var i=0, l=resp.length; i<l; i++) 
                {


                    groupinput = document.createElement('button');
                    groupinput.className = "groupButton";            
                    groupinput.innerHTML = "Vizualise";
                    groupinput.id = "g"+groupid;

                    groupdiv.appendChild(groupinput);
                    content_text.appendChild(groupdiv);

                }
            });
    }

$('.groupButton').click(function() {  
groupid = this.id;
 window.location ='pages/appviz.html?groupid=' + groupid.substr(1);
});

これを試して

于 2013-04-23T18:39:12.310 に答える
0

for ループでクリック ハンドラーを繰り返し再割り当てしています。groupButtonこれにより、クラスのすべてのボタンがgroupid、ループで最後に処理したボタンに移動します。

for (var i=0, l=resp.length; i<l; i++) {
    // this gets reassigned resp.length times
    $('.groupButton').click(function() {
        window.location ='pages/appviz.html?groupid=' + groupid;
    }
}

おそらくあなたが望むのは

function getGroupInfo(groupid){
    FB.api({
        method: 'fql.query',
        query: 'Select name, description, gid, pic_cover from group where gid=' + groupid
    },
    function(resp) {
        ...
        for() { ... }

        groupdiv.appendChild(groupinput);
        content_text.appendChild(groupdiv);

        // assign click handler after building the elements
        $('.groupButton').click(function() {
            window.location = 'pages/appviz.html?groupid=' + this.id;
        });
    }

$('.groupButton')、クラスを持つすべての要素のセットですgroupButton(クラス セレクターを参照)。したがって、クリックしたボタンのインスタンスthis.idを取得する必要があります。id

于 2013-04-23T18:35:56.627 に答える
0

さて、私はjavascriptを使用しましたが、うまくいきました。

 groupinput.onclick = function(){ window.location.replace('pages/appviz.html?groupid=' + groupid);};
于 2013-04-23T18:28:07.320 に答える