我尝试做这样的事情Javascript function as a parameter to another function?。但不幸的是,我还没有成功。我做错了什么,但我不知道是什么。请帮助我!
有一个div元素和一个函数。该函数的作用是:将另一个函数作为参数,并在单击div元素时执行它:
UPDATE3: 我已经尝试使用我的原始Web项目获取代码以使用您的示例。但我对一些参数有一些问题。我希望你能像其他人一样快地回答这个问题。
UPDATE4: 谢谢安迪E!和所有其他帮助过我的人!真的很感激!!
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<div id='divElement'>Hello World!</div>
<script type="text/javascript">
function button(exefunction){
//Some code that decide which date
var date = '20101010';
document.getElementById('divElement').onclick = exefunction(date);
}
function testfunction(text){
document.getElementById('divElement').innerHTML = text;
}
button(testfunction);
</script>
</body>
</html>
答案 0 :(得分:5)
将testfunction
更改为function
,您将拥有一个作为参数传递的匿名函数。您还需要从exefunction
中删除parens(使用它们调用函数而不是分配函数):
function button(exefunction){
document.getElementById('divElement').onclick = exefunction;
}
button(function(){
document.getElementById('divElement').innerHTML = 'Changed';
});
Here is a working example to play around with.
删除你的parens!
button(testfunction);
// not button(testfunction());
括号执行函数而不是将其作为参数传递。执行函数时,会传递其返回值。
对于上次编辑,您需要创建另一个匿名函数才能使代码生效:
document.getElementById('divElement').onclick = function () {
exefunction(date);
}
答案 1 :(得分:2)
我会替换
行button(testfunction());
通过
button(testfunction);
已更新 关键是onclick期望一个无参数函数你应该尝试一下
function button(exefunction){
//Some code that decide which date
var date = '20101010';
document.getElementById('divElement').onclick = function() {exefunction(date);}
}