这在vanilla javascript的循环中?

时间:2017-04-11 05:58:04

标签: javascript

我正在做一个测验。我需要循环遍历<li>选项数组,并将click事件监听器添加到正确的答案中。在下面的代码中,正确的答案是5,但实际上它会改变。所以我需要将click事件监听器添加到第5 <li>

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才能将click事件添加到其中。

1 个答案:

答案 0 :(得分:0)

不是向this添加事件监听器,而是将其添加到options[i]

内的if

您的if条件将类似于

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