javascript - 为什么警报在不工作时只工作一次?
问题描述
document.querySelector('html').onclick = function() {
alert('Hy');
}
每次我点击显示对话框的网页时都有效。
但是如果我要删除函数声明而是写
document.querySelector('html').onclick = alert('Hey');
它只工作一次。
我不明白这一点,因为我每次点击网页时都要求 javascript 通过嘿发出警报,但它只做一次。函数声明对这段代码有什么影响?
解决方案
因为这是做什么的:
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 箭头函数。
推荐阅读
- qt - 我们可以在表格小部件的单元格之间移动小部件吗
- java - 修改一个值并将 JSON 写入文件
- pandas - 如何根据熊猫数据框中具有 NaN 的现有列创建新列?
- javascript - 发送消息后表单元素不会隐藏
- javascript - 如何使用 Node.js Cassandra 驱动程序运行连续查询?
- google-cloud-platform - GCP:更改谷歌云平台SQL实例的时区
- ruby-on-rails - 面临 NoMethodError 且无法查明源头
- javascript - 设置默认值以响应 boostrap Form.Check
- tensorflow - 从 TF1 移动到 TF2 时具有多个输入的功能模型中的 AssertionError
- spring - 使用 Spring Boot Java 端口 8080 上的 Tomcat 失败