-- 作者:lazyy
-- 发布时间:9/14/2005 4:11:00 PM
-- 帮帮忙吧,头都大了,拜托了
<html> <head> <title>树形结构浏览器</title> <xml id=xmldoc> </xml> <script language="javascript"> // //*变量声明 //固定变量 //可变变量 function windowload() { xmlfile.focus() } function loadenter() { if (event.keycode==13) loadbutton.click(); } //*树形装载和显示函数 function loadxml() { if (document.form1.xmlfile.value=="") { alert("an xml file must be specified for loading to occur.") } else { xmldoc.async=false xmldoc.load(xmlfile.value); if(xmldoc.parseerror.errorcode!=0) { alert(errtxt) windowload() } if(xmldoc.documentelement!=null) { displaytree();[/B] } } } //文本累加用于保存HTML代码 function addhtml(text) { strstruct+=text; } //显示XML树 function displaytree() { if(xmldoc==null) { alert("no xml file has been loaded.") } else { selectednodes=new array(); selectednodestyoe=new array() selectednodeslength=0 strstruct="" elementnum=0 code=new array() buildtree(xmldoc.documentelement,0,0) displaydiv.innerhtml=strstruct }[/color] } //构建xml树 //level指示树的深度 //last指示该元素节点是否是本段的最后一个节点 //1表示真,0表示假,假如为真的话使用图片corner.gif function buildtree(node,level,last) { if (level!=0) { //code[j]用于指明该节点是否是该节的最后一个节点,是的话前面将加上空白,否则的话将会加上| for(var j=0; j<(level-1);j++) { if (code[j]==0) addhtml("<img src="vertical.gif" align="absbottom"> "); else addhtml("<img src="blank.gif" align="absbottom"> "); } //加入正确的corner图片 if(last==1) addhtml("<img src="corner.gif" align="absbottom"> ) else addhtml("<img src="corner_contiue.gif" allign="absbottom"> ") } //处理三类节点,即文本注解和其他的节点 if(node.nodetyoe==text_node) addhtml("<font color=""+textcolor+">"+node.text+"</font>"); else if(node.nodetype==comment_node) addhtml("<font color=""+commentcolor+">"+node.text+"</font>") else { var elementid="treeviewer_"+elementnum; addhtml("span id=""+elementid+">"+node.nodename+"</span>"); elementnum++; var tvnode=xmldoc.createnode("attribute",attid,treeviewns); tvnode.text=elementid; node.attributes.setnameditem(tvnode); //处理节点的属性 var attnum=node.attributes.length if (attnum>0) {for (var i=0;i<attnum;i++) { //不指明原有的名域 if(node.attributes.item(i).namespace!=null) { if(node.attributes.item(i).namespace!=treeviewns) addhtml("<b>;</b><span id=""+elementid+"_att_"+i+"\" style="color:green">"+node.attributes.item(i).nodename+"</span>"): } else//指明属性 addhtml("<b>;</b><span id=""+elementid+"_att_"+i+"" style="color:green">"+node.attributes.item(i).nodename+"</span>"); } } } } addhtml("<br>"); //假如有子节点的话,递归调用buildtree() var children=node.childnodes.length if (children!=0) { for(var i=0;i<children;i++) { if(i==(children-1)) { //到达最后一个节点 code[level]=1; buildtree(node.childnodes.item(i),(level+1),1); } else { //不是最后一个节点 code[level]=0; buildtree(node.childnodes.item(i),(level+1),0); } } } } </script> </head> <body> <h2>XML文件树形结构浏览器</h2> <hr/> <b>写入XML文件的位置和名称:</b> <form name="form1" > <input name="xmlfile" type="text" size="30" value="431.1.xml" > <br/> <br/> <input name="loadbutton" type="button" onclick="loadxml()" value="装载XML文件并显示它的树形结构"> </form> <hr/> <div id="displaydiv"></div> </body> </html> 该程序的目的是要加载XML文档并显示他的树形结构,可是 1. 在 <input name="loadbutton" type="button" onclick="loadxml()" value="装载XML文件并显示它的树形结构">中,的点击事件时却提示我找不到对象.loadxml事件不起作用,用的脚本是javascript, 2.innerhtml有什么作用?使用方法有谁知道告诉一下 谢谢了
|