我是这样改的,你看行吗?你的问题主要出在你使用了全局变量tree,而tree应该作为递归函数中的局部变量,该程序很有新意,只不过递归有稍许问题,我改动了两处能够显示结果,下面是我改了后的文件清单:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script language="javascript">
var allType = new Array();
//数组的格式说明
//*********************************************************************//alltype[] = new Array("自身ID" ,"父ID" , "自身名字" , "伸缩排版符");//*******************************************************************//奥迪的所有品牌
allType[0] = new Array(        "3", "2", "A4", "--");
allType[1] = new Array(        "4", "2", "A6", "--" );
allType[2] = new Array(        "5", "2", "新A4", "--");
allType[3] = new Array(        "6","2", "新A6", "--");
//奥迪A4的型号
allType[4] = new Array(        "7", "3",         "04款", "----");
allType[5] = new Array(        "8", "3",         "03款", "----");
allType[6] = new Array(        "9", "3",         "05款", "----");
//奥迪A6的型号
allType[7] = new Array(        "10", "4",         "04款", "----");
typeNO = allType.length;
//var tree = "";function getTree( PID )
{
var tree="";
var i;
        for (i = 0 ;i < typeNO ; i++)
        {
                if (allType[i][1] == PID )
                {
                        tree += "<div>";
                        tree += allType[i][3];
                        tree += allType[i][2];
                        tree += "</div>";
                        tree+=getTree( allType[i][0] );
                }
        }
        return tree;
}document.write( getTree( 2 ) );
</script><body>
</body>
</html>

解决方案 »

  1.   

    显示的结果与你的要求是一样的,对于递归中的局部变量和全局变量的使用不同结果会有很大的不同,这一点可要注意。
    下面是显示的结果。
    --A4
    ----04款
    ----03款
    ----05款
    --A6
    ----04款
    --新A4
    --新A6
      

  2.   

    谢谢djkhym(hym),这个问题俺想了一天一夜也没搞明白怎么回事,你一会儿就搞出来了,太喜欢你了。
    俺以前从没用过递归,这是第一次,对递归真得不是很明白。
    以后努力。
    再次严重感谢。