Javascript 我能';t将事件绑定到元素

Javascript 我能';t将事件绑定到元素,javascript,Javascript,const color=[“红色”、“橙色”、“黄色”、“绿色”、“蓝色”、“海军蓝”、“紫色”]; 设a=[]; for(设i=0;i

const color=[“红色”、“橙色”、“黄色”、“绿色”、“蓝色”、“海军蓝”、“紫色”];
设a=[];
for(设i=0;i”
console.log(a[0].innerHTML);

}
问题是,当与容器的
innerHTML
连接时(例如,与
document.body.innerHTML+=“
),容器将清空,然后使用新的HTML字符串重新解析。如果之前将侦听器附加到容器中的元素,则该侦听器将不在HTML字符串中,因此它不会转移到位于相同位置的新元素

constdiv1=document.querySelector(“#somediv”);
document.body.innerHTML+='';
const div2=document.querySelector(“#somediv”);
console.log(div1==div2);
//False,容器的内容被重新解析,新的div不同
const color=[“红色”、“橙色”、“黄色”、“绿色”、“蓝色”、“海军蓝”、“紫色”];
设a=[];
for(设i=0;i”
console.log(a[0].innerHTML);
}
for(设i=0;i

在添加事件侦听器的过程中,似乎缺少“;”。尝试在那里添加一个分号(在上面的行:“document.body,appendChild(a[i]);”)。另外,一定要添加HTML,这样我们才能更有帮助。。这可能与此有关。尝试这样做,并简单地分享链接,这是另一个更简单的方法。此外,在这里提问时,通常会更具体地说明您的问题。我不认为您可以在按钮附加到正文之前将其添加到事件侦听器,您需要在元素添加到DOM后添加事件侦听器。请记住,我们在问答网站上。问题应该有足够的细节,这里的志愿者可以帮助你,并且问题应该对下一个有类似问题的开发人员有用。@StealthThenInka问题中有足够的细节。有一个完整的代码来重现这个问题,还有一个简单但完整的问题解释…@Lloyd在将元素添加到DOM之前,您确实可以向元素添加一个侦听器。哦,谢谢!!我可以得到关于你建议的新信息。我从没听说过这件事
const color = ['red', 'orange', 'yellow', 'green', 'blue', 'navy', 'purple'];
let a = [];
for (let i = 0; i < color.length; i++) {
 a[i] = document.createElement("input");
 a[i].type = 'button';
 a[i].id = 'b' + (i + 1);
 a[i].value = color[i];
 document.body.appendChild(a[i]);
 document.body.innerHTML += "<br>"
 console.log(a[0].innerHTML);
 }
for (let i = 0; i < color.length; i++) {
   var el = document.getElementById("b" + (i + 1)) ;
   console.log(el)
el.addEventListener('click', function() {
   alert('color');
  })
}