Javascript 我如何确定点击了ul中的哪个li?

Javascript 我如何确定点击了ul中的哪个li?,javascript,Javascript,我正在用HTML/JavaScript制作一个问答游戏,随机选择问题并将问题和答案添加到页面(document.getElementById,innerHTML等) 我想添加一个点击监听器,这样当一个答案被点击时,它将确定它是否正确。如何设置此侦听器(或侦听器?)以区分lis JavaScript var elementQuestion = document.getElementById("question"); var elementAnswers = document.getElement

我正在用HTML/JavaScript制作一个问答游戏,随机选择问题并将问题和答案添加到页面(
document.getElementById,innerHTML
等)

我想添加一个点击监听器,这样当一个答案被点击时,它将确定它是否正确。如何设置此侦听器(或侦听器?)以区分
li
s

JavaScript

var elementQuestion = document.getElementById("question"); 
var elementAnswers = document.getElementById("answers"); 
elementQuestion.innerHTML = question[currentQuestion]; 
for(a = 0; a < answers[currentQuestion].length; a++) {
    var li = document.createElement("li");
    li.innerHTML = answers[currentQuestion][a];
    elementAnswers.appendChild(li);
}
var elementQuestion=document.getElementById(“问题”);
var elementAnswers=document.getElementById(“answers”);
elementQuestion.innerHTML=问题[currentQuestion];
对于(a=0;a<答案[currentQuestion]。长度;a++){
var li=document.createElement(“li”);
li.innerHTML=答案[currentQuestion][a];
元素答案。追加儿童(李);
}
HTML



    (我感觉我错过了一些明显的东西…)谢谢将此插入循环:

    li.onclick=create_on_click_function(li);
    
    并添加一个新函数,该函数将生成onclick回调函数:

    function create_on_click_function(element){
    
          return function(){
                alert(element.innerHTML + ' clicked');
          }
    }
    

    添加适当的参数,以确定单击的
  • 元素的id是否等于答案id。

    如果向每个
  • 添加id(如答案0、答案1等),您可以在
      上有一个侦听器,因为列表项上的事件将弹出:

      var elementQuestion = document.getElementById("question"); 
      var elementAnswers = document.getElementById("answers"); 
      elementQuestion.innerHTML = question[currentQuestion]; 
      for(a = 0; a < answers[currentQuestion].length; a++) {
          var li = document.createElement("li");
          li.innerHTML = answers[currentQuestion][a];
          li.id = "answer_" + a
          elementAnswers.appendChild(li);
      }
      elementAnswers.addEventListener("click", function(e) {
          alert("Clicked on " + e.target.id);
      });
      
      var elementQuestion=document.getElementById(“问题”);
      var elementAnswers=document.getElementById(“answers”);
      elementQuestion.innerHTML=问题[currentQuestion];
      对于(a=0;a<答案[currentQuestion]。长度;a++){
      var li=document.createElement(“li”);
      li.innerHTML=答案[currentQuestion][a];
      li.id=“答案”+a
      元素答案。追加儿童(李);
      }
      elementAnswers.addEventListener(“单击”,函数(e){
      警报(“点击”+e.target.id);
      });
      
      当您添加答案时,您还可以为此添加一个EventListener:

      elementAnswers.addEventListener("click", been_clicked, true);
      
      在回调函数“被点击”中,您可以引用元素 将事件(此处为ul节点)处理为“this”,并发送到 被单击为“e.target”的元素:


      查看工作演示。

      您的相关html是什么?啊,很抱歉,我将添加它。只有一个问题,或者只有一个元素的
      id
      question
      ?只有一个元素的
      id
      question
      。随机选择问题,然后将其添加到页面中。(从
      问题[]
      数组)当它返回的函数与切换无关时,为什么称它为“createToggleFunction”?“id”来自哪里?这行不通@我修改了函数:1。将名称更改为2。添加了正确的参数。3.在JSFIDLE上检查答案。它起作用了。
      elementAnswers.addEventListener("click", been_clicked, true);
      
      function been_clicked(e) {
         alert("You clicked '" + e.target.innerHTML + "'");
      }