如何为addEventListener函数添加更多参数? - Javascript

时间:2017-07-23 16:21:48

标签: javascript php parameters load addeventlistener

使用uploadDisplay_SP_reply_'.$statusid.'时遇到问题 正如您所看到的,这些div具有唯一的id ($statusid),这是自动增量所以如果我想在Javascript addEventListener函数中的特定div内显示图像,程序就不会知道div应该显示图像。这是我的问题。在其他功能中,我可以在PHP中添加此唯一ID,例如(replytext_'.$statusid.'),在Javascript中function showBtnDiv_reply(e)添加$statusid,但function completeHandler_reply我无法在function completeHandler_reply中添加event$statusid只从addEventListener中获取一个参数function completeHandler_reply。那么如何将if($isFriend == true || $log_username == $u){ $statuslist .= '<textarea id="replytext_'.$statusid.'" class="replytext" onfocus="showBtnDiv_reply('.$statusid.')" placeholder="Write a comment..."></textarea>'; $statuslist .= '<div id="uploadDisplay_SP_reply_'.$statusid.'"></div>'; $statuslist .= '<div id="btns_SP_reply_'.$statusid.'" class="hiddenStuff">'; $statuslist .= '<button id="replyBtn_'.$statusid.'" class="btn_rply" onclick="replyToStatus('.$statusid.',\''.$u.'\',\'replytext_'.$statusid.'\',this)">Reply</button>'; $statuslist .= '<img src="images/camera.png" id="triggerBtn_SP_reply" class="triggerBtn" onclick="triggerUpload_reply(event, \'fu_SP_reply\')" width="22" height="22" title="Upload A Photo" />'; $statuslist .= '</div>'; $statuslist .= '<div id="standardUpload_reply" class="hiddenStuff">'; $statuslist .= '<form id="image_SP_reply" enctype="multipart/form-data" method="post">'; $statuslist .= '<input type="file" name="FileUpload" id="fu_SP_reply" onchange="doUpload_reply(\'fu_SP_reply\','.$statusid.')"/>'; $statuslist .= '</form>'; $statuslist .= '</div>'; } } 添加到$statusid或者我有什么方法可以解决它?

PHP:

e

使用Javascript:

我可以在此处添加function showBtnDiv_reply(e){ _("replytext_"+e).style.height = "130px"; _("btns_SP_reply_"+e).style.display = "block"; } function doUpload_reply(id,sid){ var file = _(id).files[0]; if(file.name == ""){ return false; } if(file.type != "image/jpeg" && file.type != "image/gif" && file.type != "image/png" && file.type != "image/jpg"){ alert("That file type is not supported."); return false; } _("triggerBtn_SP_reply").style.display = "none"; _("uploadDisplay_SP_reply_"+sid).innerHTML = '<img src="images/rolling.gif" width="30" height="30">'; var formdata = new FormData(); formdata.append("stPic_reply", file); var ajax = new XMLHttpRequest(); ajax.addEventListener("load", completeHandler_reply, false); ajax.addEventListener("error", errorHandler_reply, false); ajax.addEventListener("abort", abortHandler_reply, false); ajax.open("POST", "php_parsers/photo_system.php"); ajax.send(formdata); } 作为参数$statusid

event

但在此我无法将function completeHandler_reply(event){ var data = event.target.responseText; var datArray = data.split("|"); if(datArray[0] == "upload_complete"){ hasImage = datArray[1]; _("uploadDisplay_SP_reply").innerHTML = '<img src="tempUploads/'+datArray[1]+'" class="statusImage" />'; } else { _("uploadDisplay_SP_reply").innerHTML = datArray[0]; _("triggerBtn_SP_reply").style.display = "block"; } } function errorHandler_reply(event){ _("uploadDisplay_SP_reply_").innerHTML = "Upload Failed"; _("triggerBtn_SP_reply").style.display = "block"; } function abortHandler_reply(event){ _("uploadDisplay_SP_reply").innerHTML = "Upload Aborted"; _("triggerBtn_SP_reply").style.display = "block"; } 添加为function completeHandler_reply(event,sid){ _("uploadDisplay_SP_reply_"+sid); } 旁边的第二个参数

nn.module

我已经尝试过,但没有为我工作。

{{1}}

2 个答案:

答案 0 :(得分:0)

您可以在eventListener中使用anonymouse函数,然后从该函数中调用实际函数。

ajax.addEventListener("load", function(event){
    completeHandler_reply.call( this, arg1,arg2,arg3 );
}, false );

or 

ajax.addEventListener("load", function(event){
    completeHandler_reply.apply( this, [ arg1, arg2, arg3 ] );
}, false );

传递任何适当的参数〜我使用arg1等作为示例

答案 1 :(得分:0)

如何使用匿名函数代替?试试这个:

ajax.addEventListener("load", function (event){
    _("uploadDisplay_SP_reply_"+sid);
}, false);