2012-09-30 79 views
1

即時通訊不是很好的JavaScript,但我已經搜索了5個小時,沒有運氣。Javascript單擊循環內的功能

我試圖讓按鈕的工作,如果我寫代碼一個接一個,它工作正常,並且可以。

我可以理解這個問題。 點擊部分只適用於CLICK實際製作。 對嗎? 但我如何正確,所以它會像我需要的工作?

我可以發送$(名稱)值來點擊功能 所以當我讓我們說按鈕1被點擊,然後scrollTop:$(按鈕1塊)或我在這種情況下思考。

var divHeight = 700 
    var blocks = document.getElementsByClassName("blocks"); 
    var i = 1; 

    for(i=1;i<blocks.length+1; i++) { 
     var name = "#button-"+i; 
     var blx = "#block-"+i; 
     $(name).click(function(){ 
      $('html, body').stop().animate({ 
       scrollTop: $(blx).offset().top - ($(window).height() - divHeight)/2 
       }, 2100,'easeInOutExpo'); 
     }); 

    } 
+1

你可以分享你的HTML代碼示例? – Amitd

+0

你確定'blocks.length'不是0嗎? –

+2

嗯,首先,你不需要循環。在jQuery中,你使用'$('[id^= block - ]')這樣的選擇器。click(...)'獲得所有以'id =「block - #」'開頭的元素並結束於某事物其他。這可以將'$ .click()'附加到您找到的選定元素列表中的每個元素。這很容易。 –

回答

2

試試這個:

var divHeight = 700 
//var blocks = $(".blocks"); 

$('[id^="button"]').click(function(){ 
    var block = '#block-' + this.id.match(/\d+/g).join(""); 
    $('html, body').stop().animate({ 
      scrollTop: $(block).offset().top - ($(window).height() - divHeight)/2 
    }, 2100,'easeInOutExpo'); 
}); 
+0

+1爲良好的編程方法 – StaticVariable

+0

非常感謝:)它的工作原理大 – user1709407