首页 > 解决方案 > 为什么警报在不工作时只工作一次?

问题描述

document.querySelector('html').onclick = function() {
    alert('Hy');
}

每次我点击显示对话框的网页时都有效。

但是如果我要删除函数声明而是写

document.querySelector('html').onclick = alert('Hey');

它只工作一次。

我不明白这一点,因为我每次点击网页时都要求 javascript 通过嘿发出警报,但它只做一次。函数声明对这段代码有什么影响?

标签: javascriptfunction

解决方案


因为这是做什么的:

document.querySelector("html").onclick = alert("Hey");

它运行代码alert("Hey"),然后将onclick元素的返回值设置为alert("hey")alert("Hey")如果返回一个函数,这只会作为一个适当的事件处理程序。它没有:

console.log(alert("Hey"));

所以你需要像这样附加一个函数或函数引用:

document.body.onclick = () => alert("Hey");
<p>Click Me</p>

上面的方法有效,只是对您想要的语法的一个小补充——我们为此使用了 ES6 箭头函数。


推荐阅读