以JavaScript中创建的HTML元素为目标

以JavaScript中创建的HTML元素为目标,javascript,dom,dom-events,Javascript,Dom,Dom Events,这是我自己的第一个项目,当我试图针对使用JavaScript创建的一组按钮时,我遇到了一个问题。事件侦听器只有在我按下创建的第一个按钮时才会启动。它不会记录任何其他按钮的点击。我错过了什么?任何帮助都将不胜感激 JavaScript: function creatButtons() { for ( var i = 65; i <= 90; i++ ) { let letter = String.fromCharCode( i ); let butto

这是我自己的第一个项目,当我试图针对使用JavaScript创建的一组按钮时,我遇到了一个问题。事件侦听器只有在我按下创建的第一个按钮时才会启动。它不会记录任何其他按钮的点击。我错过了什么?任何帮助都将不胜感激

JavaScript:

function creatButtons() {
    for ( var i = 65; i <= 90; i++ ) {
        let letter = String.fromCharCode( i );
        let button = document.createElement( "button" );
        button.id="buttons"
        button.innerHTML = letter;
        buttonHolder.appendChild(button)
    }
    
}
creatButtons()


// Event listeners
document.getElementById("buttons").addEventListener('click',function(){
     console.log("testing")
});

函数创建按钮(){

对于(var i=65;i您没有定义
buttonHolder

function creatButtons() {
    var buttonHolder = document.getElementById('buttonHolder'); // add this line
    for ( var i = 65; i <= 90; i++ ) {
        let letter = String.fromCharCode( i );
        let button = document.createElement( "button" );
        button.id="buttons"
        button.innerHTML = letter;
        buttonHolder.appendChild(button)
    }
}
函数创建按钮(){
var buttonHolder=document.getElementById('buttonHolder');//添加此行
对于(var i=65;i您可以简单地使用而不是
id
属性。对于
onclick
事件,您也可以调用函数pass
this
来获取所单击的
字母

此外,还可以使用方法将所有字符附加到按钮固定器

演示:

函数创建按钮(){
let buttonHolder=document.querySelector(“#按钮固定器”)

对于(var i=65;i)这是因为多个元素不能具有相同的唯一ID。谢谢,我省略了该代码,但我确实在忘记添加的代码顶部有一个buttonHolder变量。我甚至尝试使用class而不是ID,但它仍然只针对第一个按钮created@dgm1102您需要为您的dyn使用
onclick
功能友好创建的按钮。请使用我提供的代码
JAVASCRIPT
。它会很好地工作。让我知道。好吧,这很有魅力,我知道你所做的,直到你在函数中传递它。但是谢谢,我会研究它,并弄清楚发生了什么。谢谢你的帮助help@dgm1102很高兴听你这么说。编码快乐。为什么
forEach
?不管怎样,它的性能较慢-老式的
for loop
性能更快。理论上,
for loop
必须返回一些东西,
forEach
不需要。这是唯一的区别
function creatButtons() {
    var buttonHolder = document.getElementById('buttonHolder'); // add this line
    for ( var i = 65; i <= 90; i++ ) {
        let letter = String.fromCharCode( i );
        let button = document.createElement( "button" );
        button.id="buttons"
        button.innerHTML = letter;
        buttonHolder.appendChild(button)
    }
}