1

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

4

1 回答 1

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
}
于 2013-02-20T18:28:51.240 回答