2
<p id="specialp">some content</p>
<script>
document.getElementById('specialp').onclick=alert('clicked');
</script>

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

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

<p id="specialp" onclick="alert('clicked')" >some content</p>
4

1 回答 1

5

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

document.getElementById('specialp').onclick = function()
{
    alert('clicked');
};

当你在 HTML 中做同样的事情时,DOM 会自动为你将内容包装在一个函数中。

于 2012-04-27T18:16:40.783 回答