2013-04-23 65 views
1

我使用Facebook的API从用户的所有组,然后用FQL另一个功能,使每个组不同的股利,并分配给每个div的一个按钮,它链接到另一个页面,是这样的:如何为每个自动生成的按钮分配一个不同的ID?

$('.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); 

       } 
      }); 
    } 
+0

你在哪里定义'groupid'? – Lix 2013-04-23 17:35:50

+0

我有两个功能,第一个是我得到团队的ID,还有一个是我第一个打电话给我的ID。所以groupid是一个函数变量。 – 2013-04-23 17:37:57

+1

也许你可以将这两个函数的基本要素添加到你的问题中。如果'groupid'的行为不如预期 - 我们需要看看你是如何产生它的。 :) – Lix 2013-04-23 17:38:49

回答

1

那么,我用JavaScript,它的工作。

groupinput.onclick = function(){ window.location.replace('pages/appviz.html?groupid=' + groupid);}; 
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' /> 

希望这会帮助你。

+1

或者'group_id'没有在其他地方使用,通过删除并使用'window.location ='anotherpage.html?groupid ='+ this.id;' – Shomz 2013-04-23 17:42:24

+0

:)保存几毫秒是的,我只是没有改变他的,只是在那里添加我的线。 :) – Eather 2013-04-23 17:44:24

+1

我必须在“仅限数字”身份证属性中提高自己的眉毛...虽然它可能完全有效,但我不希望在我正在编写的代码中看到这一点。只是个人喜好或许... – Lix 2013-04-23 17:46:25

0

您正在for循环中重复分配click处理程序。这导致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类的所有元素(见Class Selector)的。所以你需要this.id来得到你点击的按钮实例的id

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); 
}); 

试试这个

相关问题