javascript - 当我不点击项目时,为什么 JavaScript 会执行“点击”事件?
问题描述
我使用添加eventListener
了DOM
对象JS
,但是当我单击此项目时,一旦加载页面并且没有意义,此侦听器就会触发。
这是我的代码,我将在其中添加eventListener
到项目中:
let table = document.getElementById('data_table' + deal);
for (let r = 0, n = table.rows.length; r < n; r++) {
table.rows[r].cells[2].addEventListener("click", logThis(this));
}
我function
应该在项目点击时执行,看起来像这样:
function logThis(me) {
console.log(me);
}
当浏览器呈现页面时,点击会自行执行,没有我的干扰。请,如果这里有人知道,为什么会发生,请写下答案。
编辑
当我在桌子上单击时cell
,什么也没有发生
解决方案
在此处添加我的评论作为回答,以帮助其他初学者了解此问题。在这里,您混合了addEventListener
签名和onclick
在 HTML 中添加处理程序的方式。
当你使用JS附加一个eventListener时,你不必调用函数(即不需要使用括号)。所以你的代码将是这样的:
table.rows[r].cells[2].addEventListener("click", logThis);
当您从 HTML 附加事件处理程序时,您会这样做:
<td onclick="logThis()">Click me</td>
在这里您需要通过函数调用传递字符串。
推荐阅读
- python - 过滤 DataFrame 并显示无法过滤的数据
- ios - UITableView + UISlider。保存数组中特定索引的值
- mysql - 使用python中的线程在Mysql上同时运行多个查询
- haskell - 共同阅读者单子定义背后的直觉
- c++ - 遍历其元素的析构函数中的列表
- javascript - 点击后替换图标元素
- android - 无法在 VS Code 的模拟器中运行颤振代码
- java - 警告:java.sql.SQLException:无法加载 JDBC 驱动程序类“oracle.jdbc.driver.OracleDriver”
- bash - 在 AWS 上的多个 EC2 实例上安装插件
- azure-iot-sdk - DeviceClient SetMethodDefaultHandlerAsync 未及时调用