onclick 事件 - 为什么 Javascript 在加载时运行它

Ath*_*eus 2 javascript function onclick dom-events

<p id="specialp">some content</p>
<script>
document.getElementById('specialp').onclick=alert('clicked');
</script>
Run Code Online (Sandbox Code Playgroud)

我刚开始使用 Javascript,我不明白为什么在页面加载时会执行警报,但在我单击该段落时不会。

当我将它内联时,处理程序按我的预期工作,如下所示:

<p id="specialp" onclick="alert('clicked')" >some content</p>
Run Code Online (Sandbox Code Playgroud)

Tej*_*ejs 5

这是因为您没有将onclick分配包装为实际函数,因此它尝试将结果分配给alert('clicked')onclick 事件处理程序(这意味着它可能undefined在分配时)。您需要做的是为该处理程序分配一个函数,如下所示:

document.getElementById('specialp').onclick = function()
{
    alert('clicked');
};
Run Code Online (Sandbox Code Playgroud)

当您在 HTML 中执行相同的操作时,DOM 会自动为您将该内容包装在一个函数中。