点击事件没有附加到按钮

时间:2011-11-28 21:42:16

标签: javascript

我需要在button标记上附加点击事件。我已经尝试过addEventLister,但它仍然不起作用。

widget.innerHTML = "<button id=\"w_btn\">do action</button>";

w_btn = document.getElementById("w_btn");

w_btn.addEventListener("click", 
    function() {
        alert("sdf");
    }
);

2 个答案:

答案 0 :(得分:2)

在某些浏览器中,第三个选项是required 以下代码应该适用于所有体面的浏览器(小提琴:http://jsfiddle.net/5hnPP/2/):

var widget = document.getElementById("widget");
widget.innerHTML = "<button id=\"w_btn\">do action</button>";
var w_btn = document.getElementById("w_btn"); //Added var
w_btn.addEventListener("click",
    function() {alert("test")},
    false
);

另一个可能的原因是存在另一个ID为w_btn的元素,该元素出现在#widget元素之前。要解决此问题,您可以调整代码。由于您覆盖了#widget元素的内容,因此第一个也是唯一的内容是按钮。定义:

var w_btn = widget.firstChild;

最后一种可能性是你处于严格模式。在严格模式下,使用未声明的变量禁止

答案 1 :(得分:1)

嗯。我为你做了一个jsFiddle,在这里:http://jsfiddle.net/5hnPP/1/。使用“真实”按钮工作。您可能遇到了DOM问题。如果我找到更有用的东西,请告诉您。

编辑:嗯,即使添加动态按钮也适合我。你正确命名你的元素吗? (注意更新的jsFiddle链接 - 已更新标记)。