首页 > 解决方案 > For Each 不适用于通过单击创建的元素

问题描述

我想要什么:每当我点击任何“你好”世界时,它都会提醒我你好,即使在这些“你好”上,它们也是由按钮创建的

这是我尝试过的代码For(of)ForEach()但对我没有任何作用

这是我的尝试

let btn = document.getElementById("kick");
btn.onclick = function() {
  let NewP = document.createElement("p");
  let createText = document.createTextNode("Hello");
  NewP.appendChild(createText);
  NewP.classList.add("hello");
  document.body.appendChild(NewP);
}
let allClasshello = document.getElementsByClassName("hello");
let allClasshelloAr = Array.from(allClasshello);
allClasshelloAr.forEach(function popup(elemetnWithHello) {
  elemetnWithHello.onclick = function() {
    window.alert("Hello")
  }
})
<p class="hello">Hello</p>
<button id="kick">Create ME</button>

Javascript 中的新功能

标签: javascriptforeach

解决方案


forEach仅在此代码的开头调用,在用户添加任何元素之前,因此该onclick事件仅添加到第一个。您需要将onclick函数添加到每个新添加的元素:

btn.onclick = function(){
   let NewP = document.createElement("p");

   ...

   NewP.onclick = function(){
       window.alert("Hello")
   }
}

推荐阅读