<script>
var arr=new Array(" ","工程库","配件库");
var arr1=new Array(" ","原料库");
var arr2=new Array(" ");function tanchu()
{   var lb=document.all.wplb.value; 
        alert(lb);
    var lx=document.all.leixing.value;
    alert(lx);
var o = document.all.ckmc;
var e = new Object();
if (lx="产品领用") 
  {
   if ( lb=='化工原料')
   {o.length="";
for(var i = 0 ; i < arr1.length ; i++)
      { e = document.createElement("option");
   o.options.add(e);
   e.text = arr1[i];
   e.value =arr1[i];
      }
        }
  else
   { o.length="";
for(var i = 0 ; i < arr2.length ; i++)
       { e = document.createElement("option");
    o.options.add(e);
    e.text = arr2[i];
    e.value =arr2[i];
       }
    }
  }if (lx="其他领用")
  {
   if ( lb=='化工原料')
{   o.length="";
for(var i = 0 ; i < arr1.length ; i++)
   { 
e = document.createElement("option");
o.options.add(e);
e.text = arr1[i];
e.value =arr1[i];
   }
 }
else
{   o.length="";
for(var i = 0 ; i < arr1.length ; i++)
   { 
e = document.createElement("option");
o.options.add(e);
e.text = arr1[i];
e.value =arr1[i];
   }
 }
   }   
if (lx="工程领用") 
  {
   if ( lb=='化工原料')
   {o.length="";
for(var i = 0 ; i < arr2.length ; i++)
      { e = document.createElement("option");
   o.options.add(e);
   e.text = arr2[i];
   e.value =arr2[i];
      }
        }
  else
   { o.length="";
for(var i = 0 ; i < arr.length ; i++)
       { e = document.createElement("option");
    o.options.add(e);
    e.text = arr[i];
    e.value =arr[i];
       }
   }
  }
   
}
</script>写的这个函数总是不能实现。

解决方案 »

  1.   

    some "else" is against to some "if".
      

  2.   

    提示一下。 注意,在每次更新 option 前,请 Remove 原有 Optionfor(var i=0;i<4;i++){
      for(var j=0;j<3;j++){
    arr[""+i+j]=new Array("原料库");
      }
    }
    arr["11"]=new Array(" ","原料库");
    arr["22"]=new Array(" ","工程库","配件库");
    arr["12"]=new Array(" ","工程库","配件库");
    arr["32"]=new Array("工程库","配件库");
    .............    e = document.createElement("option");
       o.options.add(e);
       e.text = arr3[""+index_i+index_j][i];
       e.value =arr3[""+index_i+index_j][i];
      

  3.   

    我觉得解决这种问题关键在于定义一个结构,liangjianshi(两件事) 得方法固然能够解决,但问题是这样解决太过麻烦。我觉得最好这样解决:var selects = new Array(
                            new Array("产品领用","化工原料","原料库"),
                            new Array("工程领用","其他","工程库"),
                            new Array("工程领用","其他","配件库"),
                            new Array("其他领用","其他","工程库"),
                            new Array("其他领用","其他","配件库"),
                            new Array("其他领用","化工原料","原料库"));当选择了前两个之后,首先清空第三个select中的内容,然后再循环selects中的所有项,看看有没有符合前两个select内容的,如果有的话,就在第三个select中都显示出来。这样解决起来最简单,而且逻辑性更强,修改起来更为简单。
      

  4.   

    感谢雨弓的帮助<script>
    var leixing=document.getElementById("leixing");
    var wplb=document.getElementById("wplb");
    var ckmc=document.getElementById("ckmc");var arrempty="";
    var arr1=new Array("","工程库","配件库");
    var arr2=new Array("","工程库","原料库");
    var arr3=new Array("","原料库");function uclick(){
      selectclear(ckmc);
      selectfill(arrempty);
     if(leixing.value=='产品领用' && wplb.value=='化工原料' ){
        selectfill(arr3);
      }
      if(leixing.value=='工程领用' && wplb.value=='其他' ){
        selectfill(arr2);
      }
        if(leixing.value=='其他领用' && wplb.value=='其他' ){
        selectfill(arr2);
      }
         if(leixing.value=='其他领用' && wplb.value=='化工原料' ){
        selectfill(arr3);
      } 
    }function selectfill(arr){ for(i=0;i<arr.length;i++){
       
       uopt=document.createElement("option");
       uopt.text = arr[i];
       uopt.value= arr[i];
       ckmc.options.add(uopt);
        }
         
      
    }
    function selectclear(sel){
       var length=sel.options.length;
       while(length!=0){  
        for(var i=0;i<length;i++){
                 sel.options.remove(i);
            }
          length=length/2;
         }
    }
    </script>