无法将click事件附加到动态创建的按钮

时间:2015-05-27 18:54:25

标签: javascript

我创建了一个动态创建按钮的javascript函数

function btn(d) {
    var btn = document.createElement("BUTTON");
    var t = document.createTextNode(d);
    btn.appendChild(t);
    btn.className = "myButton";
    btn.onclick = alert('hello');
    document.body.appendChild(btn);
}

调用此函数时,即使未单击按钮,也会弹出警报。单击按钮时我想要警报。可能是我错过了什么。请帮忙。感谢

4 个答案:

答案 0 :(得分:2)

您正在调用警报功能而不指定功能

alert('hello'); // evals immediately.

btn.onclick = function () {
    alert("Hello World"); // gives the button a click handler 
                          // which can be called when clicked
};

答案 1 :(得分:1)

尝试使用jQuery,就像这样(根据问题上的jQuery标记):

function btn(d) {
    var btn = $('<button/>').addClass('myButton').text(d).appendTo('body').click(function (e) {
        alert('hello');
    })
}

答案 2 :(得分:0)

onclick应如下所示:

btn.onclick = function(){alert('hi');};

答案 3 :(得分:0)

您正在为alert('hello');分配onclick的返回值,而期待一个函数。没有jQuery的正确方法是

if (btn.addEventListener)
  btn.addEventListener ('click',function(){ alert('hello');}, false);
else if (btn.attachEvent)
  btn.attachEvent ('onclick',function(){ alert('hello');});