刚才帮一个网友测试的时候写的一个简单的关联(二级的),你自己改改看看有没有用,要无限级的也有的,这个只是测试代码,没有考虑效率和其它的因素看示例:
<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>
<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>
<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>