JavaScript实现二级联动下拉框

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

< 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值