无法在JavaScript中向动态创建的按钮添加操作

时间:2012-06-12 10:49:26

标签: javascript html

我在JavaScript中动态创建了一个按钮,我无法为该按钮设置操作..

var but = document.createElement("input");
but.type = "button"
but.value = "NewButton";
but.onClick = check();
var newElement = document.getElementById("addButton"); //span element id
newElement.appendChild(but);

单击按钮时不调用'check()'函数

4 个答案:

答案 0 :(得分:3)

您的代码有2个问题。第一个是事件没有大写,第二个是你想要将事件分配给函数而不是函数的结果。它应该看起来像:

but.onclick = check;

这实际上会将事件分配给函数的地址而不是函数的预期结果(它什么都不做)。

答案 1 :(得分:1)

check()执行该函数,并将该函数返回的任何内容分配给.onClick。要将函数分配给事件,请按名称指定(不包括parens)。

答案 2 :(得分:0)

小案例onclick

but.onclick = check();

答案 3 :(得分:0)

我认为你的check函数不返回为onclick事件指定为回调所需的函数,然后

but.onclick = check; 

例如以下情况:

var check = function() {   
     return function(){
        /* some logic eg. dependent of arguments 'parent' function' */  
    }  }
//works
but.onclick = check('somethingImportant');

好吧,如果你想为这些事件分配几个回调,那就有问题:) 如果您了解addEventListener / attachEvent

,那会更好
but.addEventListener( 'click', check,true );
but.addEventListener( 'click', check2,true );

之后如果需要,使用removeEventListerdetachEvent分离函数;

然而 - 试着玩jquery :)

var check = function(){/* do something */};
        $('#addButton').append(
           $('<input type="button" value="New Button"/>') 
        ).click( check );​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

    $('#addButton').append( 
           $('<input/>' ).attr( 'type', 'button' ).val( 'New Button' ) )
                .click( function(){ /* do something */ } ) ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
    );

然后

$('#addButton').unbind(  'click' ) // unbind( 'click',check )  

这样做的可能性要大得多:)