2013-04-23 99 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); 
}); 

試試這個

相關問題