当前位置: 代码迷 >> JavaScript >> 静态四级联动下拉菜单 感兴趣的来交流下~解决方法
  详细解决方案

静态四级联动下拉菜单 感兴趣的来交流下~解决方法

热度:96   发布时间:2012-05-05 17:21:10.0
静态四级联动下拉菜单 感兴趣的来交流下~
纯JS,用了大概140行,感觉有点多,谁有更简洁的一起交流下吧~

HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>静态四级联动下拉菜单</title>

<script> 
//页面载入时初始化
window.onload = function(){
    var arrSel=["one","two","three","four"];//定义各下拉框的Id,要与html里的一致
    var i=0,arrData=[];
    arrData[i++]=["A","A1","A11","0"] //定义全部下拉项
    arrData[i++]=["A","A1","A12","1"] 
    arrData[i++]=["A","A2","A21","2"] 
    arrData[i++]=["A","A2","A22","3"] 
    arrData[i++]=["B","B1","B11","4"] 
    arrData[i++]=["B","B1","B12","5"] 
    arrData[i++]=["B","B2","B21","6"] 
    arrData[i++]=["B","B2","B22","7"] 
    arrData[i++]=["C","C1","C11","8"] 
    arrData[i++]=["C","C2","C21","9"] 
    arrData[i++]=["C","C3","C31","0"] 
    //初始化list1
    var list1=document.getElementById(arrSel[0]);
    for (i=0;i<arrData.length;i++)
    {
        if(i<arrData.length-1 && arrData[i][0]==arrData[i+1][0]) continue;
        var option=document.createElement("option");
        option.value = arrData[i][0];
        option.innerHTML = arrData[i][0]; 
        list1.appendChild(option);
    }
    //初始化list2
    var list2=document.getElementById(arrSel[1]);    
    for (i=0;i<arrData.length;i++)
    {    
        if(arrData[i][0]!= list1[0].text ) break;
        if(arrData[i][0]==arrData[i+1][0]  && arrData[i][1]==arrData[i+1][1]) continue;
        var option=document.createElement("option");
        option.value = arrData[i][1];
        option.innerHTML = arrData[i][1]; 
        list2.appendChild(option);
    }
    //初始化list3
    var list3=document.getElementById(arrSel[2]);    
    for (i=0;i<arrData.length;i++)
    {    
        if(arrData[i][1]!= list2[0].text ) break;
        if(arrData[i][1]==arrData[i+1][1]  && arrData[i][2]==arrData[i+1][2]) continue;
        var option=document.createElement("option");
        option.value = arrData[i][2];
        option.innerHTML = arrData[i][2]; 
        list3.appendChild(option);
    }    
    //初始化list4
    var list4=document.getElementById(arrSel[3]);    
    for (i=0;i<arrData.length;i++)
    {    
        if(arrData[i][2]!= list3[0].text ) break;
        if(arrData[i][2]==arrData[i+1][2]  && arrData[i][3]==arrData[i+1][3]) continue;
        var option=document.createElement("option");
        option.value = arrData[i][3];
        option.innerHTML = arrData[i][3]; 
        list4.appendChild(option);
    }        

//list1改变时触发
    list1.onchange= function(){
        list2.length=0;
        list3.length=0;
        list4.length=0;
        //list2
        var selectedText1=list1[list1.selectedIndex].text;
        for (i=0;i<arrData.length;i++)
        {    
            if(arrData[i][0]!= selectedText1) continue;            
            if(i<arrData.length-1 && arrData[i][0]==arrData[i+1][0]  && arrData[i][1]==arrData[i+1][1]) continue;
            var option=document.createElement("option");
            option.innerHTML = arrData[i][1]; 
            list2.appendChild(option);
        }
        //list3
        var selectedText2=list2[list2.selectedIndex].text;
        for (i=0;i<arrData.length;i++)
        {    
            if(arrData[i][0]!= selectedText1 || arrData[i][1]!= selectedText2) continue;            
            if(i<arrData.length-1 && arrData[i][1]==arrData[i+1][1]  && arrData[i][2]==arrData[i+1][2]) continue;
            var option=document.createElement("option");
            option.innerHTML = arrData[i][2]; 
            list3.appendChild(option);
        }        
        //list4
        var selectedText3=list3[list3.selectedIndex].text;
        for (i=0;i<arrData.length;i++)
        {    
            if(arrData[i][0]!= selectedText1 || arrData[i][1]!= selectedText2 || arrData[i][2]!= selectedText3) continue;            
            if(i<arrData.length-1 && arrData[i][2]==arrData[i+1][2] && arrData[i][3]==arrData[i+1][3]) continue;
            var option=document.createElement("option");
            option.innerHTML = arrData[i][3]; 
            list4.appendChild(option);
        }            
    }    
//list2改变时触发
    list2.onchange= function(){
        list3.length=0;
        list4.length=0;
        //list3
        var selectedText2=list2[list2.selectedIndex].text;
        for (i=0;i<arrData.length;i++)
        {    
            if(arrData[i][1]!= selectedText2) continue;            
            if(i<arrData.length-1 && arrData[i][1]==arrData[i+1][1]  && arrData[i][2]==arrData[i+1][2]) continue;
            var option=document.createElement("option");
            option.innerHTML = arrData[i][2]; 
            list3.appendChild(option);
        }        
        //list4
        var selectedText3=list3[list3.selectedIndex].text;
        for (i=0;i<arrData.length;i++)
        {    
            if(arrData[i][1]!= selectedText2 || arrData[i][2]!= selectedText3) continue;            
            if(i<arrData.length-1 && arrData[i][2]==arrData[i+1][2] && arrData[i][3]==arrData[i+1][3]) continue;
            var option=document.createElement("option");
            option.innerHTML = arrData[i][3]; 
            list4.appendChild(option);
        }                
    }        
    
//list3改变时触发
    list3.onchange= function(){
        list4.length=0;
        //list4
        var selectedText3=list3[list3.selectedIndex].text;
        for (i=0;i<arrData.length;i++)
        {    
            if(arrData[i][2]!= selectedText3) continue;            
            if(i<arrData.length-1 && arrData[i][2]==arrData[i+1][2] && arrData[i][3]==arrData[i+1][3]) continue;
            var option=document.createElement("option");
            option.innerHTML = arrData[i][3]; 
            list4.appendChild(option);
        }                
    }    
}
</script>

</head>

<body >
静态的四级联动,感觉代码有点长了,谁有更简洁的代码,交流下~~ <br/>
QQ:1140215489
 <br/> <br/>
<select id="one"  name=one> </select> 
<select id="two"  name=two> </select> 
<select id="three"  name=three> </select> 
<select id="four"  name=four> </select> 
 

</body>
</html>
 
  相关解决方案