javascript - 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 中的新功能
解决方案
forEach
仅在此代码的开头调用,在用户添加任何元素之前,因此该onclick
事件仅添加到第一个。您需要将onclick
函数添加到每个新添加的元素:
btn.onclick = function(){
let NewP = document.createElement("p");
...
NewP.onclick = function(){
window.alert("Hello")
}
}
推荐阅读
- oracle - 将数据从 Oracle 移动到 Sybase - 字符串问题
- python - 如何使用opencv检测摄像机中的黑色?
- gitlab - 通过 GitLab API 下载已手动上传的文件
- vb.net - VB.Net 2003 - 如何创建具有绑定列能力的 DataGrid 按钮列?
- ruby - 如何为 pre ruby 1.9.1 实现 string.codepoints
- oracle - PostgreSQL 中的 Oracle DBMS_APPLICATION_INFO.SET_MODULE 等效项
- react-native - 减速器方法不调用?
- javascript - 在Angular 6上解析和忽略多维数组中的空数据
- ios - 您可以在同一个 iOS 企业帐户上使用不同的分发证书来签署应用程序吗?
- android - 如何从图库中裁剪图像并在 imageview 中设置