自动调用函数

时间:2015-06-21 13:16:33

标签: javascript

当页面加载时,会自动调用

displayDate()函数。但是当我在不使用括号的情况下调用displayDate函数时,它可以正常工作。

<!DOCTYPE html>
<html>
<head>
</head>
<body>

<p>Click "Try it" to execute the displayDate() function.</p>

<button id="myBtn">Try it</button>

<p id="demo"></p>

<script>
document.getElementById("myBtn").onclick = displayDate();

function displayDate() {
    document.getElementById("demo").innerHTML = Date();
}
</script>

</body>
</html> 

此代码示例来自w3schools

3 个答案:

答案 0 :(得分:1)

@Juergen在上面是正确的,但处理这个的另一个简单方法是直接声明函数:

document.getElementById("myBtn").onclick = function() {
    document.getElementById("demo").innerHTML = Date();
}

显然,这假设您没有尝试重复使用该功能,但通常会更清洁。

答案 1 :(得分:0)

此语句调用displayDate函数并将返回值赋给onclick属性“myBtn”。

document.getElementById("myBtn").onclick = displayDate();

设置事件处理程序的更好方法是:

document.getElementById("myBtn").addEventListener("click",displayDate);

答案 2 :(得分:0)

使用括号编写函数时,会立即调用它。在JavaScript和其他语言中也是如此。

当您安装事件处理程序(这就是您所做的)时,您不想调用该函数,而是在事件发生时告诉使用哪个函数。因此,在这种情况下,您不能使用括号,因为您不想直接调用该函数,而是告诉以后应该调用哪些函数。

所以,不要写括号来安装事件处理程序。