在下面的代码中,我希望每个按钮都提醒自己的 ID。问题是在所有其他按钮中只有第一个按钮的 id 会被提醒。
document.getElementById('button').addEventListener('click', function() {
addElement();
}, false);
function addElement() {
di3 = rngc(10, 100001);
document.getElementById('demo').insertAdjacentHTML('afterbegin', '<button id="' + di3 + '" type="button" >newb</button>');
document.getElementById(di3).addEventListener('click', function() {
al(di3);
}, false);
}
function al(x) {
console.log(x);
}
function rngc(A, B) {
var d = new Date(),
n = d.getMilliseconds();
return 'ig' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, A) + Math.floor(Math.random() * (B)) + n;
}
<button id="button" type="button">add</button>
<div id="demo"></div>
注释 1:我的实际代码将许多 html 元素加载为一个字符串。 更新:我不想使用 onclick 属性; addEventListener 是我的目标。
最佳答案
您可以使用这个答案,它将解决您的问题
<script type="text/javascript">
document.getElementById('button').addEventListener('click', function() {
addElement();
}, false);
function addElement() {
di3 = rngc(10, 100001);
document.getElementById('demo').insertAdjacentHTML('afterbegin', '<button id="' + di3 + '" type="button" >newb</button>');
// console.log(document.getElementById(di3).getAttribute("id"));
document.getElementById(di3).addEventListener("click", function() { al(this.id) } , false);
}
function al(x) {
alert(x);
}
function rngc(A, B) {
var d = new Date(),
n = d.getMilliseconds();
return 'ig' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, A) + Math.floor(Math.random() * (B)) + n;
}
</script>
关于javascript - 使用 addEventListener 加载 HTML 内容时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57737250/