我应该在这些类型的情况下使用addEventListener
吗?
<input id="input" type="file" onchange="fun()>
或
document.getElementById("input").addEventListener("change", function() {
fun();
});
为什么?
答案 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();
});
);