刚才帮一个网友测试的时候写的一个简单的关联(二级的),你自己改改看看有没有用,要无限级的也有的,这个只是测试代码,没有考虑效率和其它的因素看示例:
<body>
<select id=s1></select>
<select id=s2></select>
<SCRIPT LANGUAGE="JavaScript">
var aD=[
[1,0,"blue"],
[2,1,"destiny"],
[4,0,"never"],
[5,4,"online"],
[6,0,"湖南"],
[7,6,"长沙"]
];
var Def=4;
for(var i=0;i<aD.length;i++)
{
if(aD[i][1]==0)
{
var op=new Option(aD[i][2], aD[i][2]);
op.id=aD[i][0];
s1.options.add(op);
eval("s1.onchange=function(){fChange()}");
}
}
//这里需要改变,以及要加上另外一个函数自动触发onchange事件;
s1.options[1].selected=true;
fChange();
function fChange()
{
s2.options.length=0;
if(s1.options[s1.selectedIndex].value)
{
pid=s1.options[s1.selectedIndex].id
for(var i=0;i<aD.length;i++)
{
if(aD[i][1]==pid)
{
var op=new Option(aD[i][2], aD[i][2], Def==aD[i][0] ? true : false, Def==aD[i][0] ? true : false);
op.id=aD[i][0];
s2.options.add(op);
}
}
}
}
</SCRIPT>
</body>

解决方案 »

  1.   

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <form name="frmInfo" id="frmInfo">
    <tr>
    <td width="18%">所属专题:
    <select name="special" id="special" onChange="redirect(this.options.value)">
    <option value="">--请选择--</option>
            <option value="1">第一项</option>
    <option value="2">第二项</option>
    </select>
    </td>
    <td width="20%">所属栏目
    <select name="cspecial" id="cspecial">
       <option value="0">--请选择--</option>
    </select>
    </form>
    <script language="javascript">
    <!--
    var temp=document.frmInfo.cspecial
    var cnt = new Array();cnt[0] = new Array("第一项中的第一项","1","11");cnt[1] = new Array("第一项中的第二项","1","12");cnt[2] = new Array("第二项中的第一项","2","21");cnt[3] = new Array("第二项中的第二项","2","22");function redirect(x){
    var i,jj=0;
    for (i=0 ;i<4; i++)
    {
    if (cnt[i][1]==x){
    temp.options[j]=new Option(cnt[i][0],cnt[i][2])
    j++;
      }
    }
    if (j==0)
    {
    temp.options.length=0;
    temp.options[j]=new Option("--请选择--",0)
    }}
    -->
    </script>
    </td>