【发布时间】:2012-11-30 00:16:21
【问题描述】:
我正在尝试使用 javascript 设置 onclick 事件。以下代码有效:
var link = document.createElement('a');
link.setAttribute('href', "#");
link.setAttribute('onclick', "alert('click')");
然后我使用 appendChild 将链接添加到文档的其余部分。
但我显然想要一个比警报更复杂的回调,所以我尝试了这个:
link.onclick = function() {alert('clicked');};
还有这个:
link.onclick = (function() {alert('clicked');});
但这无济于事。当我单击链接时,没有任何反应。我使用 chrome 进行了测试,浏览 DOM 对象显示该元素的 onclick 属性为 NULL。
为什么我不能将函数传递给 onclick?
编辑:
我尝试使用下面建议的 addEventListener 并获得相同的结果。链接的 DOM 将 onclick 显示为 null。
我的问题可能是该元素的 DOM 可能尚未完全构建。此时页面已经加载完毕,用户点击了一个按钮。该按钮执行构建一个新 div 的 javascript,它通过调用 document.body.appendChild 将其附加到页面。此链接是新 div 的成员。如果这是我的问题,我该如何解决?
【问题讨论】:
-
试试
addEventListener('click', function() {...}) -
我实际上最终写了an article 关于这个。
-
link.onclick = function () { ... };应该可以工作:jsfiddle.net/sZHkt/1 -
对我有用,不知道这里有什么问题。
-
在您的文章中,您提到要小心确保 DOM 已准备好进行操作。也许我的问题是我试图设置 onclick 太快了?我正在构建一个完整的 div 并在页面加载后将其附加到页面。因此页面加载,用户单击一个运行 javascript 的按钮,该按钮创建一个 div,其中包含我的链接。在设置 onclick 之前,我是否需要做一些事情来确保链接已建立?
标签: javascript