JavaScript实现二级联动下拉框

来源:互联网 发布:电视剧配音软件 编辑:程序博客网 时间:2024/05/16 18:39

 自己写的一个二级联动下拉框,有什么不足,请指正。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<strong>二级联动下拉框、二级联动下拉菜单、二级联动下拉列表:</strong><br /><br />




<script language = "JavaScript">
/*
 * 函数:Link2_POption_Change(Arr, PSelect, SSelect)
 * 说明:一级下拉框改变时初始化二级下拉框的选项
 * 作者:lg970044
 * 输入:
 * @参数 {Array}Arr                    选项信息数组
 * @参数 {String || Object}PSelect    一级下拉框的ID或对象
 * @参数 {String || Object}SSelect    二级下拉框的ID或对象
 * #参数 {String}EnableTip            是否加上提示项
 * #参数 {String}TipName                提示项名称
 * 输出:
 * 无
 
*/

function Link2_POption_Change(Arr, PSelect, SSelect)
{
    
if (typeof PSelect != 'object'){PSelect = document.getElementById(PSelect);}
    
if (typeof SSelect != 'object'){SSelect = document.getElementById(SSelect);}
    
    
//默认参数EnableTip(是否加上提示项)设为否
    var EnableTip=arguments[3]?arguments[3]:'N';
    
//默认参数TipName(提示项名称)设为'请选择'
    var TipName=arguments[4]?arguments[4]:'请选择';
    
    
var i=0,j=0;
    
    
//清空二级下拉框选项
    SSelect.length = 0;
    
if (EnableTip=='Y'){
        
//二级下拉框添加提示项
        SSelect.options[i] = new Option(TipName, '');
        i
++;
    }

    
//取得一级下拉框选择的值
    var PSelectValue=PSelect.options[PSelect.selectedIndex].value;
    
//为二级下拉框添加选项
    for (j=0; j < Arr.length; j++){
        
if (Arr[j][2== PSelectValue){
            SSelect.options[i] 
= new Option(Arr[j][0], Arr[j][1]);
            i
++;
        }

    }


}



/*
 * 函数:Link2_PSOption_Init(Arr, PSelect, SSelect)
 * 说明:初始化二级联动下拉框的选项
 * 输入:
 * @参数 {Array}Arr                    选项信息数组
 * @参数 {String || Object}PSelect    一级下拉框的ID或对象
 * @参数 {String || Object}SSelect    二级下拉框的ID或对象
 * #参数 {Number}PSelectValue        一级下拉框的预设值
 * #参数 {Number}SSelectValue        二级下拉框的预设值
 * #参数 {String}PEnableTip            一级下拉框是否加上提示项
 * #参数 {String}PTipName            一级下拉框提示项名称
 * #参数 {String}SEnableTip            二级下拉框是否加上提示项
 * #参数 {String}STipName            二级下拉框提示项名称
 * 输出:
 * 无
 
*/

function Link2_PSOption_Init(Arr, PSelect, SSelect)
{
    
if (typeof PSelect != 'object'){PSelect = document.getElementById(PSelect);}
    
if (typeof SSelect != 'object'){SSelect = document.getElementById(SSelect);}
    
    
//默认参数PSelectValue(一级下拉框的预设值)设为0
    var PSelectValue=arguments[3]?arguments[3]:0;
    
//默认参数SSelectValue(二级下拉框的预设值)设为0
    var SSelectValue=arguments[4]?arguments[4]:0;
    
//默认参数PEnableTip(一级下拉框是否加上提示项)设为否
    var PEnableTip=arguments[5]?arguments[5]:'N';
    
//默认参数PTipName(一级下拉框提示项名称)设为'请选择'
    var PTipName=arguments[6]?arguments[6]:'请选择';
    
//默认参数SEnableTip(二级下拉框是否加上提示项)设为否
    var SEnableTip=arguments[7]?arguments[7]:'N';
    
//默认参数STipName(二级下拉框提示项名称)设为'请选择'
    var STipName=arguments[8]?arguments[8]:'请选择';

    
var i=0,ii=0,j=0;

    
if (SSelectValue>0){
        
//根据二级下拉框的预设值,计算出一级下拉框的值
        for (i=0;i < Arr.length; i++){
            
if (Arr[i][2> 0 && Arr[i][1== SSelectValue) PSelectValue=Arr[i][2];
        }

    }

    
    
//初始化下拉框选项
    i=0;
    ii
=0;
    
//清空一级下拉框选项
    PSelect.length = 0;
    
if (PEnableTip=='Y'){
        
//一级下拉框添加提示项
        PSelect.options[i] = new Option(PTipName, '');
        i
++;
    }

    
//清空二级下拉框选项
    SSelect.length = 0;
    
if (SEnableTip=='Y'){
        
//二级下拉框添加提示项
        SSelect.options[ii] = new Option(STipName, '');
        ii
++;
    }

    
//为一级下拉框添加选项
    for (j=0; j < Arr.length; j++){
        
if (Arr[j][2== 0){
            PSelect.options[i] 
= new Option(Arr[j][0], Arr[j][1]);
            
if (Arr[j][1== PSelectValue){
                PSelect.options[i].selected
=true;
            }

            i
++;
        }

    }

    
//取得一级下拉框的值
    if (PSelectValue == 0) PSelectValue = PSelect.options[0].value;
    
//为二级下拉框添加选项
    if (PSelectValue > 0){
        
for (j=0; j < Arr.length; j++){
            
if (Arr[j][2== PSelectValue){
                SSelect.options[ii] 
= new Option(Arr[j][0], Arr[j][1]);
                
if (Arr[j][1== SSelectValue){
                    SSelect.options[ii].selected
=true;
                }

                ii
++;
            }

        }

    }


}

</script>








<script language="javascript">
var OptionArr = new Array();
//OptionArr[序号] = new Array('名称','值','上级关联值');
OptionArr[0= new Array('图书类','1','0');
OptionArr[
1= new Array('小说','1','1');
OptionArr[
2= new Array('文学','2','1');
OptionArr[
3= new Array('传记','3','1');

OptionArr[
4= new Array('音乐类','2','0');
OptionArr[
5= new Array('古典','4','2');

OptionArr[
6= new Array('影视类','3','0');
OptionArr[
7= new Array('电视剧','5','3');
OptionArr[
8= new Array('电影','6','3');

OptionArr[
9= new Array('百货类','4','0');
OptionArr[
10= new Array('家居','7','4');
OptionArr[
11= new Array('化妆品','8','4');
</script>

示例1:
<select id="class1id" onChange="Link2_POption_Change(OptionArr,'class1id','class2id');">
</select>
<select id="class2id">
</select>
<script language = "JavaScript">
Link2_PSOption_Init(OptionArr,
'class1id','class2id');
</script>
<br /><br />


示例2:
<select id="class11id" onChange="Link2_POption_Change(OptionArr,'class11id','class22id','Y','请选择小类');">
</select>
<select id="class22id">
</select>
<script language = "JavaScript">
Link2_PSOption_Init(OptionArr,
'class11id','class22id',0,3,'Y','请选择大类','Y','请选择小类');
</script>

详细内容见:http://www.qlolo.com/?m=pc&a=page_fh_diary&target_c_diary_id=874