我正在使用以下函数在我的HTML页面上显示消息,即文件已成功上传。问题是,当我上传多个文件时,它只显示已上传的最后一个文件的消息,而不是我要显示已上传的所有文件的消息。我试过这样的东西,但没有工作。
function completeHandler(event){
var prevstatus = "";
$id("status").innerHTML = event.target.responseText + prevstatus;
prevstatus = $id("status").innerHTML;
$id("progressBar").value = 0;
$id("progressBar").style.visibility = 'hidden';
}
似乎无法使用
$id("status").innerHTML += event.target.responseText;
调用completeHandler()的函数是:
function UploadFile(file){
$id("progressBar").style.visibility = 'visible';
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", progressHandler, false);
xhr.addEventListener("load", completeHandler, false);
xhr.addEventListener("error", errorHandler, false);
xhr.addEventListener("abort", abortHandler, false);
//start upload
xhr.open("POST", $id("upload").action, true);
xhr.setRequestHeader("X_FILENAME" , file.name);
xhr.send(file);
}
此功能也使用div状态字段
function progressHandler(event){
var percent = (event.loaded / event.total) * 100;
$id("progressBar").value = Math.round(percent);
$id("status").innerHTML = Math.round(percent)+"% uploaded... please wait";
}
答案 0 :(得分:0)
我认为prevstatus
没有做任何事情。并附加到innerHTML
使用+=
,如:
尝试
function completeHandler(event){
$id("status").innerHTML += event.target.responseText;
$id("progressBar").value = 0;
$id("progressBar").style.visibility = 'hidden';
}
答案 1 :(得分:0)
每次使用空字符串调用函数时,您都会初始化var prevstatus
。
尝试用这个替换innerHTML调用以附加新消息:
$id("status").innerHTML += event.target.responseText;
或者在添加新消息之前,您可以使用以下行:
$id("status").innerHTML = event.target.responseText + $id("status").innerHTML;
答案 2 :(得分:0)
好的我修好了
var prevstatus = "";
作为全局变量和函数
function completeHandler(event){
$id("status").innerHTML = event.target.responseText + prevstatus;
prevstatus = $id("status").innerHTML;
$id("progressBar").value = 0;
$id("progressBar").style.visibility = 'hidden';
}