2015-05-04 48 views
0

我在這裏有兩個函數,第一個函數是由一個按鈕觸發的,它意味着要觸發第二個函數,它會改變html區域的第一個按鈕的內部html。通過事件處理函數從一個函數發送參數到另一個函數

我的問題是如何將參數從第一個函數INTO第二個傳遞給按鈕和文本字段具有相同的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)

以確定恰當的按鈕i如何能實現在事件監聽器的第二函數completeHandler此相同的選擇性的能力。

我已經試過

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

兩個不工作。我怎麼能保存和傳播從doLoad原來的說法...

+1

是您的completeHandler功能取決於Ajax調用的響應? – Afsar

+0

是的,是的。當ajax給出正確的響應時CompleteHandler觸發 – peter

+1

重新縮進代碼後,它看起來有點不正常。你是否缺少'function(){'在頂部或者是''''只是一個錯字? – slebetman

回答

1

您可以通過在阿賈克斯的響應這樣相同的ID號:

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'; 
} 
+0

也許你應該提一下爲什麼OP應該更喜歡'onreadystatechange'而不是mozilla特定的'onload'事件 – slebetman

+0

是否有'我爲每個'使用,有很多idnumber值在php中定義。 idnumber = 1,idnumber = 2,idnumber = 3等。這種方式只針對在頁面上生成的第一個,而其他的都不是 – peter

+1

那麼您是否定位了多個按鈕? – Afsar

相關問題