0

我使用 Facebook API 从用户那里获取所有组,然后使用 FQL 的另一个函数为每个组创建不同的 div,并为每个 div 分配一个按钮,该按钮链接到另一个页面,例如:

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

但是在每个按钮上,它都会分配最后一个按钮的 groupid。我不知道哪里错了。

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

从哪里获得 groupid?不清楚。您可以将按钮中的 groupid 分配为 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 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

好吧,我使用了 javascript,它确实有效。

 groupinput.onclick = function(){ window.location.replace('pages/appviz.html?groupid=' + groupid);};
于 2013-04-23T18:28:07.320 回答
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 回答