我有一个带有脚本的HTML页面,其中xhttp对象从XML文件中读取节点值并写入它们。在读取所有必需节点之前,我想以百分比(read_rows/total_rows * 100)
显示数字进度指示器。但由于整个事情在一个线程上运行,我无法做到这一点。对我应该做什么的任何建议?
这里有一些javascript代码 -
function fetch(xml_file, index) {
//create xhttp object, read xml, get nodeValue of element "VALUE" etc...
xhttp = new XMLHttpRequest();
xhttp.open("GET", xml_file ,false);
xhttp.send(null);
xmlDoc = xhttp.responseXML;
data = xmlDoc.getElementsByTagName("VALUE")[index].childNodes[0].nodeValue;
document.write(data);
// CALCULATE PROGRESS AND WRITE TO SOME OVERLAY DIV...
}
这是HTML的一部分 -
<p><script>fetch(data_file, index); index++;</script></p>
<p><script>fetch(data_file, index); index++;</script></p>
<p><script>fetch(data_file, index); index++;</script></p>
当每个<p></p>
被填满时,我想在某处显示进度,比如叠加DIV。我该如何同时做到这一点?
答案 0 :(得分:1)
通过使用回调函数,我可以在xhttp对象从XML文件中读取数据时显示进度。
我已将代码更改为 -
function fetch(xml_file, index) {
//create xhttp object, read xml, get nodeValue of element "VALUE" etc...
xhttp = new XMLHttpRequest();
xhttp.open("GET", xml_file ,false);
xhttp.send(null);
xmlDoc = xhttp.responseXML;
data = xmlDoc.getElementsByTagName("VALUE")[index].childNodes[0].nodeValue;
document.write(data);
progress(index); //CALLBACK FUNCTION
}
function progress(index) {
document.getElementById("ProgressString").innerHTML = Math.round((index/358)*100) + "% complete"; // 358 nodes were to be read
}