2013-02-02 205 views
1

所以我有這個eventListner調用的類,就像一個魅力,但只有一次,因爲INTE調用add類指數0事件偵聽環

我試着去創建一個循環,將調用每增加里面的腳本類,但我不能讓環......

這是一個沒有循環

var AddEvent = "add"; 
var addClass = document.getElementsByClassName(AddEvent)[0] 
addClass.addEventListener("click", addDiceEvent, false); 
function addDiceEvent() { 
     dicesides_funcfunc(); 
} 

事件聽者而這正是我試着去創造。

function AddDice(){ 
     for (i = 0; i < 5; i++) { 
      var addClass = document.getElementsByClassName("add"); 
      addClass.addEventListener("click", addDiceEvent, false); 
      function addDiceEvent(){ 
      dicesides_funcfunc(); 
      } 
     } 

} AddDice(); 

任何想法?

回答

1

希望這項工作.......

var addClassArr= document.getElementsByClassName(AddEvent); 

for (var x in addClassArr) 
{ 
var addClass = addClassArr[x]; 

addClass.addEventListener("click", addDiceEvent, false); 

} 

function addDiceEvent() { 
     dicesides_funcfunc(); 
} 
+2

不要遍歷數組(或數組類似的對象,例如在這種情況下的'NodeList')使用'for..in',因爲這也會枚舉可能不相關的對象屬性。首選'for(var i = 0; i

+0

@MattiasBuelens它工作時,我添加您的字符串,並將addClassArr [x]中的x更改爲addClassArr [i]。 謝謝你們倆:) – Dymond

0

您需要創建在for循環新skope,試試這個:

function AddDice(){ 
     for (i = 0; i < 5; i++) { 

      (function(){  
      var addClass = document.getElementsByClassName("add"); 

       addClass.addEventListener("click", function(){ 
        dicesides_funcfunc(); 
       }, false); 
      })(); 
     } 
}