用JavaScript创建关联菜单
用JavaScript做一个关联菜单,使右边下拉菜单的内容随着左边的选项的改变而改变。源程序如下,我仔细一一分析:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>menu</title>
<SCRIPT language=JavaScript>
//此段可用其他内容替代,暂时用一个9X9乘法表的二维数组来填充

  var dataArray = new Array(9);        // 产生乘法表的外壳?
    for (var j = 0; j < dataArray.length; j++)// 准备用行进行填充。
  {
     var aRow = new Array(9);       // 创建一行。
       for (var i = 0; i < aRow.length; i++)// 准备填充这一行。
  {
        aRow[i] = (i + " times " + j + " = " + i*j);  // 计算并存储值。
        }
dataArray[j] = aRow;              // 将已填充的行放入表中。

   }
var xbound=9;
var ybound=9;
function fill(SelectCtrl, itemArray)      //填充下拉单
{
var i;
for (i = SelectCtrl.options.length; i >= 0; i--) {   //清空选项
   SelectCtrl.options[i] = null; }
if (itemArray != null)
{
   for (i = 0; i < itemArray.length; i++)
     {
     SelectCtrl.options[i] = new Option(itemArray[i]); //创建选项对象
     if (itemArray[i] != null)
      SelectCtrl.options[i].value = itemArray[i];   // 给选项赋值
     } 
  }
  SelectCtrl.options[0].selected = true;          //让第一个选项成为默认选项
 } 
 
 
function fillMain(SelectCtrl)                 // 填充主下拉单
  {var i;
   mainArray= new Array(ybound);
mainArray[0]="Please select!"             //创建一个一维数组,用以装二维数组     for (i=0;i < ybound;i++)               //的首列值
   mainArray[i+1]=dataArray[i][0];
    fill(SelectCtrl, mainArray);
  }

 function fillSub(SelectCtrl,index)              //填充子下拉单
  {var i;
  if (index<0)                         //当index<0时创建一个
  { subArray= new Array(2);
   subArray[0]="<--------->";                 //只含有二个元素的数组
subArray[1]="";
}
else
{
  subArray= new Array(xbound-1);               
  for(i=0;i < xbound-1;i++)
  subArray[i]=dataArray[index][i+1];              //用二维数组的其他列元素
  }                              //填充新创建的一维数组
fill(SelectCtrl,subArray);
    
}
</script>
</head>
<!------当装载此页面时,调用fillMain函数----------->
<body onLoad="fillMain(document.form1.MainMenu );">     
<FORM name=form1 >
      <!---------当主下拉单选项改变时,调用fillSub函数-------->
      <DIV align=center><SELECT size=1
      onchange="fillSub(this.form.SubMenu, this.selectedIndex-1);"
      name=MainMenu> <option></option><option></option>
       </SELECT> <SELECT 
       size=1 name=SubMenu> <option><--------------></option><option></option></SELECT> 
      </DIV></FORM>

</body>
</html>