[ js ] 讀取多個xml程式流程問題
在寫一個java script需要讀取多個 xml 檔案,遇到一些問題,在下面程式碼中迴圈呼
叫 getsub() function,程式沒有等檔案讀取、處理完就執行了迴圈的動作了,就是
載入第n個檔案後,檔案讀取中還沒做 ondataavailable 事件發生後所指定要做的處理,
迴圈就呼叫load 第n+1個檔案,請問一下我該怎麼處理呢?謝謝
<OBJECT width=0 height=0 classid="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
id="xmldso"></OBJECT>
<script>
function fa(oxml) {
var config = oxml.XMLDocument.selectSingleNode("config");
var node = config.selectSingleNode("background");
var scr = new fb(node);
for (var i=0;i<config.childNodes.length;i++) {
switch (config.childNodes[i].tagName)
scr.addFc(config.childNodes[i]);
break;
default:
break;
}
}
retrun scr;
}
//--------
function fb(xmlnode) {
this.Fc = Array();
if (xmlnode) {
for (var i=0;xmlnode && i<xmlnode.attributes.length;i++) {
switch (xmlnode.attributes[i].name) {
case "left":
this.left = xmlnode.attributes[i].text;
break;
default:
break;
}
}
}
this.show = function() {
for (var i=0;i<this.movies.length;i++)
this.Fc[i].getsub();
alert(this.Fc.length);
}
this.addFc = function(node) {
this.Fc[this.movies.length] = new fc(this.FC.length, node);
}
}
//---------
function fc(id,xmlnode) {
this.desc = null;
this.list = null;
for (var i=0;i<xmlnode.attributes.length;i++) {
switch (xmlnode.attributes[i].name) {
case "desc":
this.desc = xmlnode.attributes[i].text;
break;
case "list":
this.list = xmlnode.attributes[i].text;
break;
default:
alert("Invalid attribute '" + xmlnode.attributes[i].name + "' at node '" + xmlnode.tagName + "'");
break;
}
}
this.getsub = function() {
var doc = xmldso.XMLDocument;
doc.load(this.desc);
doc.ondataavailable = function() {//裡面執行一些 parsing 的動作
}
}
}
var screen;
</script>
<span id="xml_section" >
<xml id="page" src="<?="$prefix$file"?>"
onreadystatechange="if (this.readyState=='complete') {
screen = fa( this);
screen.show();
}"
/xml>
</span>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.218.111.206
※ 編輯: weishiang 來自: 61.218.111.206 (01/30 14:03)
※ 編輯: weishiang 來自: 61.218.111.206 (01/30 14:38)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章