如何将事件处理程序绑定到正在创建的元素
how to binding a event handler to a element being created?
在我的页面中,我必须根据用户的操作动态创建一些元素,例如,当用户单击按钮时,我会创建一个新的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).的原因
如果是的话,有什么办法让它发挥作用吗?
我在应用程序中使用Prototype 1.4。
谢谢你的回答。
现在使用<a>
而不是<div>
然而,由于某种原因,我无法使用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`?
您想在ele
中加入什么元素?如果我理解您的问题,您想将事件添加到正在创建的div
中,而div
具有id = nDiv
,那么为什么要尝试使用id = con
获取元素呢?如果您试图将一个事件绑定到您创建的div,也许您可以这样做:
function createNewDiv(){
var div = document.createElement('div');
div.id = 'nDiv';
//add click handler to this div
div.addEventListener("click",function(){xxx},false);
div.innerHTML="s";
}
如果您在绑定函数时遇到问题(我不这么认为),请尝试定义您的函数并以这种方式将其绑定到点击:
function foo(){xxx}
...
div.addEventListener("click",foo,false);
...
请注意,绑定foo
函数时没有括号。
您可以使用DOM创建div。这将使它可以立即添加事件处理程序。示例:
function createNewDiv(){
var ele = document.createElement("div");
div.setAttribute("id","nDiv");
// ...
document.getElementById("con").appendChild( ele );
}
旁注:
使用DOM也比innerHTML更快、更符合标准。但人们倾向于使用innerHTML,因为它更容易。
var str="<div id="nDiv">xxx</div>"
在进一步研究之前,这是问题的一部分吗?我不确定它的作用,但除非你去掉内部引号,否则它是无效的。
无论如何,我不确定你的代码到底在做什么,但你想做的应该是这样的:
// Get a container element for wherever you're going to add these divs
var container = document.getElementById("con");
function createDiv() {
var div = document.createElement("div");
// assign properties to div
div.onclick = someFunction;
container.appendChild(div);
}
jsFiddle示例
相关文章:
- 在运行时创建元素时移到一边时出错
- 如何在动态创建元素的内联onclick事件中传递对象
- 在 jquery 中创建元素
- 当我动态创建元素时,选择的插件不起作用
- HTML javascript函数来创建元素
- 从外部 js 脚本创建元素并插入到 html 中
- 在 d3 中为数据列表创建元素
- 如何在循环中创建元素并将其添加到DOM中
- JQuery-创建元素并将其连接到其他html
- 创建元素更好还是只在html上准备好它们
- 挂钩文档.使用函数原型创建元素
- Javascript动态创建元素和onclick函数
- 从任何jquery选择器字符串创建元素的最有效方法
- 动态创建元素和添加onclick事件不起作用
- 在javascript中创建元素时,CSS转换规则固有地被覆盖
- 如何在特定的HTML标记下用JavaScript创建元素
- 如何根据我正在读取的节点的元素名称创建元素
- 使用Jquery在元素中创建元素
- 使用JavaScript创建元素并使用它
- 将托管 Bean 与 javascript 结合使用来创建元素