Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取JavaScript函数的内容_Javascript_Html_Function - Fatal编程技术网

获取JavaScript函数的内容

获取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,

我试图用JavaScript创建一个函数,可以设置HTML按钮的
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()
绑定为侦听器即可。