通过事件处理程序将参数从一个函数发送到另一个

时间:2015-05-04 06:07:14

标签: javascript php html ajax

我在这里有两个功能,第一个由按钮触发,它意味着触发第二个功能,它将改变伴随html区域的第一个按钮的内部html。

我的问题是如何将第一个函数INTO中的参数传递给第二个按钮,而textfield具有相同的idnumber。

    function doLoad(idnumber, id) {
        var file = _(id).files[0];
        _("Btn1_QP_"+idnumber).style.display = "none";
        _("Display_QP_"+idnumber).innerHTML = "Image uploading......";
        var formdata = new FormData();
        formdata.append("stPic", file);
        var ajax = new XMLHttpRequest();
        ajax.addEventListener("load", completeHandler, false);
        ajax.open("POST", "pho_stem3.php");
        ajax.send(formdata);    
     }

    function completeHandler(event) {
        _("Display_QP").innerHTML = 'wahooo';
    } 
}

在函数中,doLoad idnumber由按钮给出,用于标识("Btn1_QP_"+idnumber)

的正确按钮

如何在事件监听器中的第二个函数completeHandler中实现相同的选择性能力。

我试过了

ajax.addEventListener("load", completeHandler(idnumber), false);
ajax.addEventListener("load", ("completeHandler"+idnumber), false);

两个都不行。我怎样才能保留并传输来自doLoad的原始参数...

1 个答案:

答案 0 :(得分:1)

您可以传递相同的ID号以响应ajax:

function doLoad(idnumber, id) {
    var file = _(id).files[0];
    _("Btn1_QP_" + idnumber).style.display = "none";
    _("Display_QP_" + idnumber).innerHTML = "Image uploading......";
    var formdata = new FormData();
    formdata.append("stPic", file);
    var ajax = new XMLHttpRequest();        
    ajax.open("POST", "pho_stem3.php");
    ajax.send(formdata);

    ajax.onreadystatechange = function() {
    if (ajax.readyState == 4) {
         completeHandler(idnumber);
    }
}
}

function completeHandler(idnumber) {
   _("Display_QP_" + idnumber).innerHTM = 'wahooo';
}