我在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()'函数
答案 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 );
之后如果需要,使用removeEventLister
或detachEvent
分离函数;
然而 - 试着玩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 )
这样做的可能性要大得多:)