处理在javascript中创建的函数集

处理在javascript中创建的函数集,javascript,Javascript,我正在尝试使此代码正常工作: var dropzoneId = "drop_zone"; window.addEventListener("dragenter", function(e) { if (e.target.id != dropzoneId) { e.preventDefault(); e.dataTransfer.effectAllowed = "none"; e.dataTransfer.dropEffect = "none"; } }, fals

我正在尝试使此代码正常工作:

var dropzoneId = "drop_zone";

window.addEventListener("dragenter", function(e) {
  if (e.target.id != dropzoneId) {
    e.preventDefault();
    e.dataTransfer.effectAllowed = "none";
    e.dataTransfer.dropEffect = "none";
  }
}, false);

window.addEventListener("dragover", function(e) {
  if (e.target.id != dropzoneId) {
    e.preventDefault();
    e.dataTransfer.effectAllowed = "none";
    e.dataTransfer.dropEffect = "none";
  }
});

window.addEventListener("drop", function(e) {
  if (e.target.id != dropzoneId) {
    e.preventDefault();
    e.dataTransfer.effectAllowed = "none";
    e.dataTransfer.dropEffect = "none";
  }
});

function _(el){
    return document.getElementById(el);
}

function uploadFile(inc, id_prototipo, id_allegato_prototipo, id_pratica, tipo, event){
    if(event === undefined){
    var file = _("file" + inc).files[0];
    }
    else{
    event.preventDefault();
    event.stopPropagation();
    var file = event.dataTransfer.files[0];
    }
    // alert(file.name+" | "+file.size+" | "+file.type);
    var formdata = new FormData();
    formdata.append("upfile", file);
    formdata.append("id_prototipo", id_prototipo);
    formdata.append("id_allegato_prototipo", id_allegato_prototipo);
    formdata.append("id_pratica", id_pratica);
    formdata.append("tipo", tipo);
    var ajax = new XMLHttpRequest();
    ajax.upload.addEventListener("progress", window["progressHandler"+inc], false);
    ajax.addEventListener("load", window["completeHandler"+inc], false);
    ajax.addEventListener("error", window["errorHandler"+inc], false);
    ajax.addEventListener("abort", window["abortHandler"+inc], false);
    ajax.open("POST", "../../classi/upload.php");
    ajax.send(formdata);
}

function create_function(){
    var temp = _("nof");
    nof = temp.value;
    for(j = 0; j < parseInt(nof); j++){
        window["progressHandler"+j] = function(event){
            document.getElementById("loaded_n_total" + j).innerHTML = "Uploaded "+event.loaded+" bytes of "+event.total;
            var percent = (event.loaded / event.total) * 100;
            document.getElementById("progressBar" + j).value = Math.round(percent);
            document.getElementById("status" + j).innerHTML = Math.round(percent)+"% uploaded... please wait";
            alert();
        }
        window["completeHandler"+j] = function(event){
            document.getElementById("status"+j).innerHTML = event.target.responseText;
            document.getElementById("progressBar"+j).value = 0;
            alert();
        }
        window["errorHandler"+j] = function(event){
            document.getElementById("status"+j).innerHTML = "Upload Failed";
            alert();
        }
        window["abortHandler"+j] = function(event){
            document.getElementById("status"+j).innerHTML = "Upload Aborted";
            alert();
        }


        /*window["drag_drop"+j] = function(inc){


        }*/
    }
}

var dropzoneId=“drop_zone”;
window.addEventListener(“dragenter”,函数(e){
如果(e.target.id!=dropzoneId){
e、 预防默认值();
e、 dataTransfer.effectAllowed=“无”;
e、 dataTransfer.dropEffect=“无”;
}
},假);
window.addEventListener(“dragover”,函数(e){
如果(e.target.id!=dropzoneId){
e、 预防默认值();
e、 dataTransfer.effectAllowed=“无”;
e、 dataTransfer.dropEffect=“无”;
}
});
window.addEventListener(“drop”,函数(e){
如果(e.target.id!=dropzoneId){
e、 预防默认值();
e、 dataTransfer.effectAllowed=“无”;
e、 dataTransfer.dropEffect=“无”;
}
});
函数(el){
返回文档.getElementById(el);
}
函数上传文件(inc,id_prototipo,id_allegato_prototipo,id_pratica,tipo,事件){
如果(事件===未定义){
var file=389;(“文件”+inc).files[0];
}
否则{
event.preventDefault();
event.stopPropagation();
var file=event.dataTransfer.files[0];
}
//警报(file.name+“|”+file.size+“|”+file.type);
var formdata=new formdata();
formdata.append(“upfile”,file);
formdata.append(“id\u prototipo”,id\u prototipo);
formdata.append(“id\u allegato\u prototipo”,id\u allegato\u prototipo);
formdata.append(“id_pratica”,id_pratica);
formdata.append(“tipo”,tipo);
var ajax=new-XMLHttpRequest();
addEventListener(“进度”,窗口[“progressHandler”+inc],false);
addEventListener(“加载”,窗口[“completeHandler”+inc],false);
addEventListener(“错误”,窗口[“errorHandler”+inc],false);
addEventListener(“abort”,窗口[“abortHandler”+inc],false);
open(“POST”、“../../classi/upload.php”);
发送(formdata);
}
函数create_函数(){
var temp=uUf(“nof”);
nof=温度值;
对于(j=0;j
我需要创建一组函数(我在for循环中使用了f.e.窗口[“errorHandler”+j]), 然后,我必须确保他们被事件召回

问题是(假设nof为3)事件的回调可以工作,但它不调用函数errorHandler0,而是继续循环并调用函数errorHandler4,就像继续for循环一样

我被贬低了:\
请帮助我

您在哪里使用
uploadFile()
方法?我建议您阅读如何以面向对象的方式编程。学习正确的面向对象编程将使你的生活更加轻松。尤其是在这种情况下。学习材料示例:我通过输入字段调用该方法实际上,问题是它没有调用函数(f.e.)errorHandler1,而是调用erroHandler3(最后一个j索引加1)。调试控制台清楚地显示代码再次输入for括号并调用最后的j值。