2017-01-22 10 views
0

私は非常に単純なトグル機能を作成しました。 個々のidと6個のaタグを持つ6つのdivタグを持っています なぜ、私はループ変数を使ってIDを反復することができませんか?addEventListener内の反復は機能しません

<script> 
    var open = false; 
    var boxes = document.getElementsByClassName("boxlink"); 

    for (var i = 0; i < boxes.length; i++) { 

      boxes[i].addEventListener("click", function() { 

        var b = document.getElementById("textbox" + i); 
        toggle(b); 
       } 

       , false); 

    } 

    function toggle(obj) { 


     if (open == false) { 

      obj.style.height = 'auto'; 
      open = true; 

     } 
     else { 

      obj.style.height = '78px'; 
      open = false; 
     } 

    } 


</script> 

答えて

0

あなたは

// Code goes here 
 

 
var open = false; 
 
var boxes = document.getElementsByClassName("boxlink"); 
 

 
for (var i = 0; i < boxes.length; i++) { 
 

 

 
    var onClickFunction = (function(i) { 
 
    return function() { 
 

 
     var b = document.getElementById("textbox" + i); 
 
     toggle(b); 
 
    } 
 
    })(i); 
 
boxes[i].addEventListener("click",onClickFunction , false); 
 

 
} 
 

 
function toggle(obj) { 
 

 

 
    if (open == false) { 
 

 
    obj.style.height = 'auto'; 
 
    open = true; 
 

 
    } else { 
 

 
    obj.style.height = '78px'; 
 
    open = false; 
 
    } 
 

 
}

+0

ワンダフルループ内でクロージャを作成する必要があり、どうもありがとうございました!私が理解していないのは、関数の最後の(i)式です。 –

+0

即時呼び出し関数式(IIFE) http://benalman.com/news/2010/11/immediately-invoked-function-expression/ –

+0

ありがとうございます!ちょうどもう1つの質問:このページ:http://kolleritsch.benjaminboehlke.com/projects.html 「WEITERLESEN」をクリックすると、何も起こりません。もう一度クリックするとコードが正常に動作します。この問題はすべての "WEITERLESEN" -linkに影響します。どうして? –

関連する問題