我的第一个代码正在工作,但是在myFunction之后添加()括号后第二个代码无效。是什么原因?
代码1
<script type="text/javascript">
function myFunction(){
var status = document.getElementById("status");
status.innerHTML = "The page finishing loading made my function run.";
}
window.onload = myFunction;
</script>
<h3 id="status"></h3>
代码2
<script type="text/javascript">
function myFunction(){
var status = document.getElementById("status");
status.innerHTML = "The page finishing loading made my function run.";
}
window.onload = myFunction();
</script>
<h3 id="status"></h3>
答案 0 :(得分:1)
在第一种情况下,您将分配将在回调中使用的函数的引用。
在您的第二种情况下,您指定function
返回的值,在这种情况下undefined
,因为您不是window.onload
撤回任何东西。
{{1}}或任何事件处理程序,期望在回调时执行函数引用。
答案 1 :(得分:0)
window.onload是一个事件处理程序,必须是一个函数,而不是函数的结果。当然你可以留下括号,但是这样你的函数myFunction应该返回另一个函数
<script type="text/javascript">
function myFunction(){
return function() {
var status = document.getElementById("status");
status.innerHTML = "The page finishing loading made my function run.";
}
}
window.onload = myFunction();
</script>
<h3 id="status"></h3>