在我的网页,我要创建一些元素dymamiclly根据使用的操作,例如,当用户点击一个按钮,我将创建一个新的div,但我想一个点击处理程序添加到这个div:如何将事件处理程序绑定到正在创建的元素?
function createNewDiv(){
var str="<aid='na'>xxx</a>";
//add click handler to this a
var ele=document.getElementById("na");
if(ele.attachEvent){
ele.attachEvent("onclick",function(){xxxx});
}else if(ele.addEventListener){
ele.addEventListener("click",function(){xxx},false);
}
document.getElementById("con").innerHTML="s";
}
当我运行此代码时,出现错误:
ele未定义。
也许这就是造成,当我使用
var ele=document.getElementById("na")
中的HTML DOM正在建设,所以它无法找到的元素。(我想这就是为什么我们使用jquery.ready(XXX) 。
如果是这样,是否有任何想法,使其工作?
我在我的应用程序使用原型1.4。
感谢您的所有答案。
现在使用<a>
代替<div>
然而,对于somea原因,我不能使用DOM来建立我的元素,这是说,我不能用:
var div_n=document.createElement("a");
a.id="na";
......
相反,我必须使用:
var s="<a id='na'>xxx</a>";
//append this created link to the existed container
document.getElementById("con").innerHTML=s;
//then how to add the click handler to the `a#na`?
getElementById应该与您正在创建的div具有相同的ID吗?评论说,你正试图添加一个点击处理程序到新的div但id是不同的。它是否起作用并不重要,我只是想弄清楚你想做什么。 – 2011-06-15 13:15:23
嗨,我更新我的帖子,我想添加点击处理程序到新创建的div。 – hguser 2011-06-15 13:17:26
感谢您更新您的信息。我回答了我的回答,我认为这是正确的,因为其他两个人在我后面发布了相同的答案;) – 2011-06-15 13:30:38