2017-04-11 30 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"); 
    }); 
}