2017-04-11 28 views
0

進行測驗。我需要循環訪問<li>的一系列選項,並將點擊事件偵聽器添加到正確的答案中。在下面的代碼中,正確的答案是5,但實際上它會改變。所以我需要將點擊事件監聽器添加到5th <li>這在一個循環中的香草javascript?

var someFunction = function() { 
    var correctAnswerNo = "5"; 
    var options = optionsContainer.getElementsByTagName("li"); 

    for (var i = 0; i < options.length; i++) { 
     console.log(i); 
     console.log(correctAnswerNo); 
     if (correctAnswerNo === i) { 
      console.log(this); 
      // here is where I will put my event listener 
     } 
    } 
} 

當我退出correctAnswerNoi它按預期工作。但是,當我登錄this然後我得到未定義。我需要訪問this才能將點擊事件添加到它。

+0

你不需要循環。只是用'options [4]'得到第五個元素'(索引從0開始,這就是爲什麼4是第五個元素) –

+0

_但實際上它會改變 - 如果它沒有硬編碼,使用'options [i] .addEventListener(type, listener [,options]);'https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener – jtrein

+4

而不是將事件偵聽器添加到'this',將它添加到'options [i] '如果'內部 – gurvinder372

回答

0

不是添加事件偵聽器this相反,把它添加到options[i]if

if條件內將會像

if (correctAnswerNo === i) { 
    options[i].addEventListener("click", function() { 
    console.log("correct answer"); 
    }); 
}