addEventListener 模块模式

addEventListener Module Pattern

我不知道为什么,但是当我点击 "button" 时没有任何反应...

控制台中没有消息,没有错误。如何解决?

JS

var bird = (function(){

    let button    = document.querySelector('#addBird');

    button.addEventListener('click', addBird);

    function addBird()
    {
       console.log('addBird');
    };

    return {
        addBird: addBird
    };
})();

HTML

<button id="addBird">Add Bird</button>

刚刚在 CodePen 中尝试了这个例子:

http://codepen.io/JasonGraham/pen/pbowXz

var bird = (function(){

    let button    = document.querySelector('#addBird');
    button.addEventListener('click', addBird);

    function addBird()
    {
       console.log('addBird');
    };

    return {
        addBird: addBird
    };

})();

据我所知,您的代码似乎按预期工作。在 Chrome 中,单击按钮会导致每次将 "addBird" 消息记录到控制台。

你期待不一样的东西吗?

发生这种情况是因为 JavaScript 在 DOM(基本上是 HTML 标记)准备就绪之前加载。因此,button 变量等于 NULL.

两种解决方法:

  • 将您的 JavaScript 移到页面末尾,就在 </body> 标记之前。
  • 使用 jQuery 的文档就绪函数包装您的 JavaScript 代码:
    $(function() { // code here });

好的,如果我在#birdMod 之外插入它就可以工作...所以它不是 .render() 函数。谢谢您的帮助。 :)