作者weishiang (wei)
看板Ajax
标题[ js ] 读取多个xml程式流程问题
时间Wed Jan 30 10:10:41 2008
在写一个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)