重新做了一下,改成一个htm文件和一个xml文件
aa.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
</head>
<body>
<script language="javascript">
var FrameXml = new ActiveXObject("MSXML.DOMDocument");
FrameXml.async=false;
FrameXml.load("aa.xml");
chapColNode = FrameXml.documentElement.selectSingleNode("//Chapters");
function getActColumn(chapColNode)
{
var aryTemp= new Array();
for (var i=0; i<chapColNode.childNodes.length; i++)
{
Item = chapColNode.childNodes.item(i);
for (var j=0; j<Item.childNodes.length; j++)
{
Item2 = Item.childNodes.item(j);
if(Item2.tagName=="Act")
{
for (var k=0; k<Item2.childNodes.length; k++)
{
Item3 = Item2.childNodes.item(k);
if(Item3.tagName=="Act_Column")
{
var _id=Item3.getAttribute("id");
var _name=Item3.getAttribute("Name");
var _link=Item3.text;
var oTmpAct;
var nIndex=findObjId(aryTemp,_id);
if(nIndex==-1)
{
oTmpAct=new oActColumn(_id,_name);
aryTemp[aryTemp.length]=oTmpAct;
}
else
{
oTmpAct=aryTemp[nIndex];
}
var iLen=oTmpAct.oChapAct.length; //就是这一行的iLen
oTmpAct.oChapAct[iLen]=new ChapAct(i+1,j+1,_link);
alert(iLen);
}
}
}
}
}
return aryTemp;
}
function findObjId(oAry,sId)
{
for(n=0;n<oAry.length;n++)
{
    var oTmp=oAry[n];
    if(oTmp.oId==sId)
    {
        return n;
    }
}
return -1;
}function oActColumn(col_id,col_name){
this.oId = col_id;
this.oName = col_name;
this.oChapAct=new Array();
}function ChapAct(nChap,nAct,sLink)
{
this.chap=nChap;
this.act=nAct;
this.oLink=sLink;
}
getActColumn(chapColNode);
</script>
</body>
</html>
----------
aa.xml
-----
<?xml-stylesheet version='1.0' encoding='gb2312'?>
<Course_root>
<Course_Name>当代世界经济与政治2</Course_Name>
<Course_First_Page First_Page_id="Couse_00" />
<Columns>
<Column id="Couse_00" Name="课程首页">course.html</Column>
<Column id="Couse_14" Name="课程介绍">../lanmu/kcjs/kcjs.htm</Column>
<Column id="Couse_15" Name="教师介绍">../lanmu/jsjs/jsjs.htm</Column>
<Column id="Couse_07" Name="课程大纲">../lanmu/kcdg/kcdg.htm</Column>
<Column id="Couse_24" Name="试卷结构">../lanmu/ksdg/sjjg.htm</Column>
<Column id="Couse_06" Name="参考文献">../lanmu/ckwx/ckwx.htm</Column>
<Column id="Couse_73" Name="模拟考试">../lanmu/mnks/mnks.htm</Column>
</Columns>
<Chapters>
<Chapter Name="第一章 战后世界经济的发展变化与基本趋势 " First_Page_id="Chap_00">
<Act Name="第一节 战后世界经济的发展与变化" First_Page_id="Act_00">
<Act_Column id="Act_00" Name="课文内容">../content/kcjj/word/ch_01/se_01/timeline.html</Act_Column>
</Act>
<Act Name="第二节 当今世界经济发展的基本趋势和特点" First_Page_id="Act_00">
<Act_Column id="Act_00" Name="课文内容">../content/kcjj/word/ch_01/se_02/timeline.html</Act_Column>
</Act>
<Column id="Chap_25" Name="概念解释">../ch_01/lanmu/gnjs/1.htm</Column>
<Column id="Chap_12" Name="即时练习">../ch_01/lanmu/jslx/1.htm</Column>
<Column id="Chap_03" Name="例题分析">../ch_01/lanmu/ltfx/1.htm</Column>
<Column id="Chap_19" Name="相关案例">../ch_01/lanmu/xgal/1.htm</Column>
<Column id="Chap_04" Name="背景资料">../ch_01/lanmu/bjzl/1.htm</Column>
<Column id="Chap_26" Name="常见问题">../ch_01/lanmu/cjwt/1.htm</Column>
</Chapter>
<Chapter Name="第二章 战后世界政治的发展变化与基本趋势" First_Page_id="Chap_00">
<Act Name="第一节 战后世界政治格局的演变" First_Page_id="Act_00">
<Act_Column id="Act_00" Name="课文内容">../content/kcjj/word/ch_02/se_01/timeline.html</Act_Column>
</Act>
<Act Name="第二节  冷战后世界政治发展的趋势与特点" First_Page_id="Act_00">
<Act_Column id="Act_00" Name="课文内容">../content/kcjj/word/ch_02/se_02/timeline.html</Act_Column>
</Act>
<Act Name="第二节  冷战后世界政治发展的趋势与特点" First_Page_id="Act_00">
<Act_Column id="Act_00" Name="课文内容">../content/kcjj/word/ch_02/se_02/timeline.html</Act_Column>
</Act>
<Column id="Chap_25" Name="概念解释">../ch_02/lanmu/gnjs/2.htm</Column>
<Column id="Chap_12" Name="即时练习">../ch_02/lanmu/jslx/2.htm</Column>
<Column id="Chap_03" Name="例题分析">../ch_02/lanmu/ltfx/2.htm</Column>
<Column id="Chap_19" Name="相关案例">../ch_02/lanmu/xgal/2.htm</Column>
<Column id="Chap_04" Name="背景资料">../ch_02/lanmu/bjzl/2.htm</Column>
<Column id="Chap_26" Name="常见问题">../ch_02/lanmu/cjwt/2.htm</Column>
</Chapter>
</Chapters></Course_root>

解决方案 »

  1.   

    你这段程序就是可以变啊,你一直对aryTemp[0].oChapAct进行操作,每次加一,虽然内容相同,最终结果是:aryTemp.length=1,arrTemp[0].oChapAct.length=5且arrTemp[0].oChapAct的每项内容都是相同的
      

  2.   

    是啊,有一点想不通
    我觉得oTmpAct这个后来不变了,但实际上每次还要增加内容的
    后来aryTemp没有改变,但实际上又增加了内容
    所以郁闷呢
      

  3.   

    明白了
    thanks all the same to: DuJianDong(翼) ( ) 信誉:100其实真正起作用地是oTmpAct.oChapAct[iLen]=new ChapAct(i+1,j+1,_link);这一句开始我一直走入一个误区,即局部定义地变量在超过范围就自动消失(错误啊)但我测试了好多次,知道有些局部变量在定义外部也可以调用