2016-11-03 9 views
0

クラスddownのすべての要素にコードを入力して、実際のドロップダウンにslactiveクラスのイベントを渡します。しかし、コンソールはdocument.getElementById('sl'+(n+1))がヌルでオブジェクトではないと言っています。しかし、私がイベント内の関数内でnを使用しないと、これは正常に動作しますが、最初の要素に対してのみ機能します。要素は、sl1、sl2、sl3、...のように名付けられます。nullはオブジェクトではなく、ドロップダウンです

ddown = document.getElementsByClassName('ddown'); 
for(var n=0; n<ddown.length; n++) { 
    ddown[n].addEventListener('mousedown', function(){document.getElementById('sl'+(n+1)).classList.add('slactive');}); 
    console.log('sl'+(n+1)); 
} 

P.S. console.logは正しいコードを与え、私は問題がnの範囲にあると思う。

+0

何かで(リスナーを追加している)あなたの行を置き換え、typeof演算(ヌル)は、実際に「オブジェクト」です。 – vothaison

+0

@vothaison私はコンソール出力を別の言葉で書いています。 – MaxelRus

+0

さて、gurvinder372は正しいです。あなたの場合は "事故閉鎖"と呼ばれています^^。 – vothaison

答えて

2

リスナーを追加する前に、nの値を固定する必要があります。

あなたが気づくかもしれません

(function (n){ ddown[n].addEventListener('mousedown', function(){document.getElementById('sl'+(n+1)).classList.add('slactive');});)(n) 
関連する問題