日期:2014-05-16  浏览次数:20377 次

JS问题求教,关于XML,急!
代码如下:
<script>
/*
*     xmlParser   class     解析xml文件
*/

function   xmlParser(path){
this.path=path;
}


xmlParser.prototype.getDocXML=function(){
var   xmlDoc   =   new   ActiveXObject( "MSXML2.DOMDocument.3.0 ");
xmlDoc.load(this.path);
return   xmlDoc;
}

//如果将该方法改成直接返回一个现成的字符串,如 "1:南京,2:苏州,3:扬州 "
//则不会出现三中的问题
xmlParser.prototype.getZones=function(){
var   doc=this.getDocXML();
var   zones=doc.getElementsByTagName( "zone ");
var   id,name;
var   zonesArray=new   Array();
for(var   i=0;i <zones.length;i++){
zone=zones[i].attributes;
id=zone[0].value;
name=zone[1].value;
zonesArray.push(id+ ": "+name);
}
return   zonesArray.toString();
}


/*
*testviewModal   class     测试联同菜单
*/
function   testviewModal(xmlparser){
this.xmlparser=xmlparser;
}

testviewModal.prototype.init_ZoneSELECT=function(){
var   html= " <div> zone: <select   id= 'zone '> </select> </div> ";//这里有点匪夷所思,如果替换成形如 "test "的字符串则没有问题
return   html;
}

testviewModal.prototype.init_ZoneOPTION=function(){
alert(this.xmlparser.getZones());//为简化问题写成这样
}

testviewModal.prototype.initialize=function(){
var   html=this.init_ZoneSELECT();
document.write(html);//显示select控件
this.init_ZoneOPTION();//弹出对话框
}

var   xmlparser=new   xmlParser( "viewModal.xml ");
//xmlparser.getZones();//增加这句无用的,则可正常工作
var   test=new   testviewModal(xmlparser);
test.initialize();
</script>
二:xml文件如下:
<?xml   version= '1.0 '   encoding= 'gb2312 '?>
<view>
<zones>
<zone   id= '1 '   name= '南京 '   />
                                    <zone   id= '2 '   name= '苏州 '   />
<zone   id= '3 '   name= '扬州 '   />
</zones>
</view>

三:
      我希望得到的结果是:出现一个select控件和一个弹出式对话框。而结果却不是这样

      js语法上我觉得没有问题了,于是我从下面(程序中给了注释的地方)分析问题;
      //这里有点匪夷所思,如果替换成形如 "test "的字符串则没有问题
      //增加这句无用的,则可正常工作
      而这样的分析很容易导致我往IE本身的缺陷上去思考

      所以我觉得这不是一个简单的问题,   请js高手帮帮忙!!!!

------解决方案--------------------
晕,这个帖子又回来了,刚才一个和这个一摸一样的,写了一堆,帖子不见了,:)

document.write(html);//显示select控件
原因在于你重写了页面
这句改成document.getElementById( "div1 ").innerHTML=html//这里要注意的是浏览器在使用innerHTML时是会根据DOM关系把HTML重新组装的
再在外面再加个div