html - 创建的新 div 未显示 ID
问题描述
我做了一个点击div。通过单击前两次潜水,我得到警报(this.id) - some_id1 或 some_id2,这很好。单击 Add Div 按钮会创建一个新的 div some_id3,但单击新的 div 不会显示警报 (this.id),它不会注册。我不知道为什么。任何想法?
<style>
#some_id1{
width: 50px;
height: 50px;
margin: 10px;
float: left;
background-color: red;
}
#some_id2{
width: 50px;
height: 50px;
margin: 10px;
float: left;
background-color: red;
}
#some_id3{
width: 50px;
height: 50px;
margin: 10px;
float: left;
background-color: red;
}
#parent{
width: 350px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
#parent2{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
</style>
<button type="button" onclick="AddDiv()" >Add Div</button>
<div id="parent">
<div id="some_id1"></div>
<div id="some_id2"></div>
</div>
<div id="parent2"></div>
<script>
var div = document.getElementsByTagName("div");
var divCount = div.length;
var clickedDivId
for (var i = 0; i < divCount; i += 1) {
div[i].onclick = function(e) {
event.stopPropagation();
clickedDivId = this.id;
alert(this.id);
};
}
function AddDiv(){
var y = document.createElement('div');
y.id = 'some_id3';
document.getElementById("parent").appendChild(y);
}
</script>
解决方案
您需要为动态创建的元素添加事件侦听器。
var div = document.getElementsByTagName("div");
var divCount = div.length;
var clickedDivId
for (var i = 0; i < divCount; i += 1) {
div[i].onclick = function(e) {
clickedDivId = this.id;
alert(this.id);
};
}
function AddDiv(){
console.log(i);
var y = document.createElement('div');
// event.stopPropagation();
y.id = 'some_id'+(i+1);
y.addEventListener('click', function (e) {
clickedDivId = this.id;
alert(this.id);
}, false);
document.body.appendChild(y);
i+=1;
}
div[id^=some_id] {
width: 50px;
height: 50px;
margin: 10px;
float: left;
background-color: red;
}
<button type="button" onclick="AddDiv()" >Add Div</button>
<div id="some_id1"></div>
<div id="some_id2"></div>
推荐阅读
- javascript - 如何根据 createdAt 显示数组的最后 2 个元素
- xcode - 在邻居的 ipad 上部署 xamarin 表单应用程序失败
- swift - Xcode 11.4.1 Core Data 模型无法识别
- kotlin - 如何在 Kotlin 中安全地进行转换(无空转换)
- java - 如何在 Java Web 应用程序中适当地配置服务器、XML 和 JSP 文件?
- c++ - 无法显式实例化模板类
- webgl2 - 如何在 WebGL2 中创建内部格式为“RG8UI”的纹理?
- sql - 如果我更喜欢使用 raw 而不是其内置功能,那么使用 Knex 是否毫无意义?
- r-markdown - 如何使用 loveit 主题和 blogdown 制作浮动目录
- html - 如何在使用 shape-outside 创建的圆圈内垂直居中文本?