回调函数更改时addEventListener与onclick

时间:2018-10-13 12:11:24

标签: javascript addeventlistener

我的HTML代码如下: 我的问题是,为什么单击按钮1时显示“之前”对话框,而单击按钮2时显示“之后”对话框?

<html>
    <body>
        <button id="b1">Button 1</button>
        <button id="b2" onclick="OnClick();">Button 2</button>

        <script>
            var OnClick = function(){alert("before");};
            document.getElementById("b1").addEventListener("click", OnClick);
            var OnClick = function(){alert("after");};
        </script>
    </body>
</html>

JSFiddle链接:https://jsfiddle.net/72chrqnf/

1 个答案:

答案 0 :(得分:0)

在更改指向另一个函数的变量之前,OnClick将被评估为第一个函数。当此行得到评估时:

  document.getElementById("b1").addEventListener("click", OnClick);

它评估OnClick并得出:

 document.getElementById("b1").addEventListener("click", [a reference pointing to the function])

,因此更改OnClick不会对其产生影响。