我应该使用addEventListener

时间:2013-10-21 21:13:05

标签: javascript

我应该在这些类型的情况下使用addEventListener吗?

<input id="input" type="file" onchange="fun()>

document.getElementById("input").addEventListener("change", function() {
  fun();
});

为什么?

1 个答案:

答案 0 :(得分:3)

onchange属性要求fun函数位于全局范围内。在较大的应用程序中,您希望避免这种情况,因为应用程序或外部库中可能存在具有相同名称的其他函数。或者想象一下构建在页面上多次使用的组件。

addEventListener可以包装在这样的闭包中,并在隔离的组件中使用:

(function(){})(
    function fun(){
         // Now other components can also have a `fun` function, without causing confusion.
         // `fun` is only defined inside the IIFE (the (function(){})() wrapper around the module).
    }
    document.getElementById("input").addEventListener("change", function() {
      fun();
    });
);