javascript - 警报和监听点击事件时出现问题

标签 javascript event-handling

我想在点击图像时收到提醒。我正在尝试按 id 选择元素。我尝试过 querySelector 和 getElementbyId。如果我将事件监听器设置为页面加载,则重新加载时会发出警报。 所以我确信我正确链接了该页面,但是当我尝试监听图像上的点击时,我做错了一些事情。

我尝试了 querySelector 和 getElementbyId。我已将脚本放在头部及其自己的文件中。我已将 id 放在图像标签上以及图像周围的 span 和 div 中。

document.addEventListener("DOMContentLoaded", function(event) {
  alert("RELOAD");
});

let thumbnailElement = document.getElementById("smart_thumbnail");

thumbnailElement.addEventListener("click",     function() {
  alert("I saw you click!");
});
<div id="smart_thumbnail">
  <img src="https://images.unsplash.com/photo-1454789548928-9efd52dc4031?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1400&q=80" alt="earth" class="small">
</div>

浏览器控制台的错误是这样的:

TypeError: document.querySelector(...) is null

最佳答案

在访问 DOM 元素的值之前,您必须确保该元素已经存在。

如果您的脚本在 html 加载之前运行,您可以通过等待窗口首先完成加载来使其工作:

document.addEventListener("DOMContentLoaded", function(event) {
   alert("RELOAD");
   let thumbnailElement = document.getElementById("smart_thumbnail");

   thumbnailElement.addEventListener("click", function() {
      alert("I saw you click!");
   });
});

关于javascript - 警报和监听点击事件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57095886/

相关文章:

javascript - jQuery 中的 .bind ('click' ) 和 .click() 有什么区别?

javascript - 根据点击 Bootstrap 更改文本

php - JQuery.getJson 未正确触发

jquery - 如何解码从 jQuery 的 keydown() 事件处理程序中按下的字符

c# - 如果我在 C# 中重载添加和删除,为什么我不能引发或调用事件

c# - 通过键入更改 C# ComboBox 值时调用什么事件处理程序

javascript - 仅当先前的事件处理完成时才运行事件处理程序

asp.net - jQuery 和 ASP.NET 控件问题

javascript 二维码 php 元 url

javascript - ReactJS 应用程序不适用于移动设备