简体   繁体   English

如何在按钮数组上设置 addEventListener

[英]How to set addEventListener on an array of buttons

I have the following code.我有以下代码。 I displayed each of the elements of eleEQ1 as buttons.我将 eleEQ1 的每个元素显示为按钮。 However when I try to set the onClick event I am facing problem.但是,当我尝试设置 onClick 事件时,我遇到了问题。 I added the addEventListener, but still it shows Uncaught TypeError: Cannot read property 'addEventListener' of null .我添加了 addEventListener,但它仍然显示Uncaught TypeError: Cannot read property 'addEventListener' of null Please help me out guys.请帮帮我吧伙计们。

var eleEQ1 = ["John", "ate", "an", "apple", "before", "afternoon"];
function printBtn() {
    var a = 1;
    if (a == 1){
      shuffle(eleEQ1);
      var x = eleEQ1.toString();

      for (var i = 0; i < eleEQ1.length; i++) {
         var btn = document.createElement("button");
         var t = document.createTextNode(eleEQ1[i]);
         btn.appendChild(t);
         btn.id=(t);
         document.body.appendChild(btn);
      }
    var x = document.getElementById(eleEQ1[0]);
    x.addEventListener("click", function(){document.getElementById("demo2").innerHTML = "Formed Sentence (after selecting words):\n"+"John"});
    }

 function shuffle(array) { for (var i = array.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = array[i]; array[i] = array[j]; array[j] = temp; } return array; } function test(prefix, id) { //console.log("prefix="+prefix+", id="+id); if(prefix=="given") { document.getElementById("order").append(createButton("order",id)); } else { if(document.getElementById(prefix+id)) document.getElementById(prefix+id).remove(); } document.getElementById("result").innerText= document.getElementById("order").innerText==eleEQ1.join("") ?"Correct!" :"Keep trying" ; } function createButton(prefix, id) { var btn=document.getElementById(prefix+id); if(btn) return btn; btn=document.createElement("button"); btn.id=prefix+id; btn.innerText=id; btn.setAttribute("onclick","test('"+prefix+"', '"+id+"')"); return btn; } var eleEQ1 = ["John", "ate", "an", "apple", "before", "afternoon"]; var given = eleEQ1.slice(); shuffle(given); given.forEach(item=>document.getElementById("given").append(createButton("given",item)));
 <p> <span>Put the words in order</span> </p> <p> <span>Click buttons in "Given" to add to "Order"</span><br> <span>Click buttons in "Order" to remove from "Order"</span> </p> <p> <span>Given: </span> <span id="given"></span> </p> <p> <span>Order: </span> <span id="order"></span> </p> <p> <span>Result: </span> <span id="result"></span> </p>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM