获取JavaScript函数的内容
我试图用JavaScript创建一个函数,可以设置HTML按钮的获取JavaScript函数的内容,javascript,html,function,Javascript,Html,Function,我试图用JavaScript创建一个函数,可以设置HTML按钮的onClick属性。 那么,假设我有这个函数: function myFunc(action){ document.getElementById('mybtn').setAttribute("onClick", action); } 这会将mybtn的属性onClick设置为变量action的内容(这应该是一个函数)。 如果我像这样运行函数: myFunc(function(){ alert("Hello,
onClick
属性。
那么,假设我有这个函数:
function myFunc(action){
document.getElementById('mybtn').setAttribute("onClick", action);
}
这会将mybtn
的属性onClick
设置为变量action
的内容(这应该是一个函数)。
如果我像这样运行函数:
myFunc(function(){
alert("Hello, World!");
});
然后变量action
将设置为
function (){
alert("Hello, World!");
}
如果如图所示运行myFunc
,它将成功地将action
的内容添加到按钮的onClick
属性中。唯一的问题是,如果我在运行myFunc
后单击该按钮,我只会得到一个错误。它说:
未捕获的语法错误:意外标记(
我认为这是因为在
onClick
属性中,不能定义新函数。
如何仅获取变量
action
中函数内部的内容?您可以添加事件侦听器,而不是像这样更改onclick的属性:
myFunc(function(){
alert("Hello, World!");
});
函数myFunc(操作){
document.getElementById('mybtn')。addEventListener('click',action);
}
myFunc(函数(){
警报(“foo”);
});
Foo
属性值只能是字符串。您的函数被字符串化为
'function(){ alert("Hello, World!"); }'
然后事件处理程序将其解析为函数体。这意味着它将被视为函数声明,但函数声明需要一个名称。因此,是的,有一个意外的(
:前面应该有一个名称。Firefox提供了一个更有意义的错误
SyntaxError:function语句需要名称
function(){
警惕(“你好,世界!”);
}
html
onclick
事件属性需要字符串,而不是函数。您可以定义要调用的函数,然后将字符串引用函数传递给myFunc
点击
函数myFunc(操作){
document.getElementById(“mybtn”).setAttribute(“onclick”,action);
}
函数clickHandler(){
警惕(“你好,世界!”);
}
myFunc(“clickHandler()”);
不更新元素的onClick属性,只需通过Javascript将函数action()
绑定为侦听器即可。