我在尝试删除重复的JavaScript代码。我有一个页面有很多<input type="file">
。每个加载一个图像并执行一些独特的处理。问题是,我有以下代码的很多重复:如何删除DOM事件处理程序的重复JavaScript代码?
inputFile1.onchange = function (e) {
var file = e.target.files[0];
if (typeof file == 'undefined' || file == null) {
return;
}
var imageType = /image.*/;
if (!file.type.match(imageType)) {
window.alert('Bad file type!');
return;
}
var reader = new FileReader();
reader.onloadend = function (e) {
var imageLoader = new Image();
imageLoader.onload = function() {
// process image
};
imageLoader.src = e.target.result;
};
reader.readAsDataURL(file);
};
inputFile2.onchange = ... (repeats all but process image)
inputFile3.onchange = ... (repeats all but process image)
只有在process image
注释代码变化。我如何删除周围的重复代码?
我知道JavaScript函数是对象。我如何定义一个函数对象并为每个事件处理程序创建一个不同的实例,并将process image
的不同函数传递给每个对象?
无需使用返回函数的函数。只需将onchange分配给常用功能即可。 – jfriend00 2012-08-05 21:37:31
@ jfriend00仍然需要一种将非公共函数与'input [type =“file”]关联的方法。 – Dennis 2012-08-05 21:44:50
咦?你可以从'e'参数中得到引发该事件的对象,并且我没有看到你在额外的功能级别上做了额外的事情。它看起来并不需要我。 – jfriend00 2012-08-05 21:49:54