如何在xhttp对象从XML中获取数据时显示进度计数器?

时间:2013-02-20 18:10:21

标签: javascript xml html5 xmlhttprequest

我有一个带有脚本的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。我该如何同时做到这一点?

1 个答案:

答案 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
}