중복 된 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
@ jfriend00 비공식 함수를'input [type = "file"]'에 연결하는 방법이 필요합니다. – Dennis
응? 당신은 'e' 매개 변수로부터 이벤트를 일으키는 객체를 얻을 수 있습니다. 그리고 나는 당신이 여분의 기능 수준으로 추가 작업을하는 것을 보지 못합니다. 그것은 나에게 요구하지 않는다. – jfriend00