javascript - addEventListener 无法正常工作

标签 javascript html addeventlistener

我在将事件监听器添加到 JS 时遇到问题...如果我将按钮与 onclick 属性连接,它会起作用,但如果我在 HTML 中删除它并尝试添加 eventListener('click', myFunction),它就不起作用。顺便说一句,它是一个简单的下拉按钮。

在下面的按钮示例中,我删除了 onclick="myFunction"并添加了这个 ->

JavaScript:

document.getElementById("btn").addEventListener('click', myFunction);

function myFunction() {
    document.getElementById("myDropdown").classList.toggle("show");
}

window.onclick = function(event) {
  if (!event.target.matches('.dropbtn')) {
    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
      }
    }
  }
}
 

HTML:

<button id="btn" class="dropbtn">RECEPT</button>
<div id="myDropdown" class="dropdown-content">
  <ul>
    <li>-5 jaja</li>
    <li>-0.2l mleka</li>
    <li>-100g slanine</li>
    <li>-200g brasna</li>
    <li>-10g putera</li>
    <li>-50g sira</li>
    <p class="recipeInfo">Kuvati na laganoj vatri i ostaviti da se krcka 5 minuta</p>
  </ul>
</div>

我不知道问题是什么,也不知道解决方案...有什么帮助吗?

最佳答案

您可能试图在 DOM 元素准备好之前访问它们。尝试将您的 Javascript 代码放入 DOMContentLoaded 监听器中:

document.addEventListener("DOMContentLoaded", function(event) { 
    // put your javascript code here
});

这将保证您的 Javascript 代码可以访问所有 DOM 元素。在 $(document).ready equivalent without jQuery 阅读更多内容

关于javascript - addEventListener 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079678/

相关文章:

javascript - Angular2 中两个组件干扰文件事件

javascript - HEX 到 HSL 转换 javascript

javascript - Array.from 不执行深复制

javascript - 如何使用 JQuery 从按钮单击中获取 Extreme DIV 的 ID、名称和类?

html - 网格单元格后的额外空间,不知道它来自哪里

javascript - 为什么 Github Pages 不允许我的有效 HTML?

javascript - 基于 Select 标签中的 addEventListener 的切换不起作用

按钮上的 Javascript EventListener 不起作用

javascript - 使用 Javascript 注入(inject) HTML 代码

javascript - 将 'keydown' 事件监听器添加到文档(输入字段除外)