各位高手帮我看看

var aaa=function (buttonid) { document.getElementById("sss").innerHTML+="<button id="+buttonid+">"+buttonid+"</button>"; document.getElementById(buttonid).onclick=function(){alert()} } var obj1=new aaa('button1') var obj2=new aaa('button2')

请问:为什么button1不响应事件,如果不把onclick写在button 标签里如何解决

因为 innerHTML 发生了变化,浏览器重新解析这部分 dom
—— 就把先前设定的 onclick 抹掉了。

用 appendChild 可以避免这种情况:
[code="javascript"]
var aaa = function(buttonid){
var c = document.createElement("button")
c.id = c.innerHTML = buttonid
c.onclick = function(){alert("hi")}
document.getElementById("sss").appendChild(c)
}[/code]