2016-11-03 32 views
0

我想我的代碼給每個元素與類ddown事件,將廣告slactive類實際下拉。但控制檯說document.getElementById('sl'+(n+1))爲空,所以不是一個對象。但是,如果我在事件中的函數內部沒有使用n,此工作正常,但僅適用於第一個元素。元素被命名爲sl1,sl2,sl3,...空不是一個對象,使下拉

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) 
相關問題