码迷,mamicode.com
首页 > Web开发 > 详细

js 联动下拉菜单

时间:2018-02-21 16:33:53      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:tee   col   type   nload   dex   style   fun   first   child   

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>js 联动下拉菜单</title>

  <script>

window.onload=function()

{

    var s1=new Sel(‘div1‘);

   

   // 数据

    s1.add(‘0‘,[‘1‘,‘2‘,‘3‘]);

    s1.add(‘0_0‘,[‘1_1‘,‘1_2‘,‘1_3‘]);

    s1.add(‘0_0_0‘,[‘1_1_1‘,‘1_1_2‘,‘1_1_3‘]);

    s1.add(‘0_0_1‘,[‘1_2_1‘,‘1_2_2‘,‘1_2_3‘]);

    s1.add(‘0_0_2‘,[‘1_3_1‘,‘1_3_2‘,‘1_3_3‘]);

    s1.add(‘0_1‘,[‘2_1‘,‘2_2‘,‘2_3‘]); 

    s1.add(‘0_1_0‘,[‘2_1_1‘,‘2_1_2‘,‘2_1_3‘]);

    s1.add(‘0_1_1‘,[‘2_2_1‘,‘2_2_2‘,‘2_2_3‘]);

    s1.add(‘0_1_2‘,[‘2_3_1‘,‘2_3_2‘,‘2_3_3‘]);

    s1.add(‘0_2‘,[‘3_1‘,‘3_2‘,‘3_3‘]); 

    s1.add(‘0_2_0‘,[‘3_1_1‘,‘3_1_2‘,‘3_1_3‘]);

    s1.add(‘0_2_1‘,[‘3_2_1‘,‘3_2_2‘,‘3_2_3‘]);

    s1.add(‘0_2_2‘,[‘3_3_1‘,‘3_3_2‘,‘3_3_3‘]); 

 

   s1.init(3);  // 几个下拉框

}

    function Sel(id)

    {

        this.oParent=document.getElementById(id); //选择容器

        this.data={};               // 存放数据

        this.aSel=this.oParent.getElementsByTagName(‘select‘); // 创建容器中的 select 下拉框

    }

    Sel.prototype=

    {

        init:function(num)

        {

            var This=this;

            for(var i=1;i<=num;i++)

            {

                var oSel=document.createElement(‘select‘);

                var opt=document.createElement(‘option‘);

                opt.innerHTML=‘默认‘;           // 每个下拉框的初始值

                oSel.appendChild(opt);           // 每个下拉框的初始元素

                oSel.index=i;  //1,2,3

                this.oParent.appendChild(oSel);  // 添加初始元素

                oSel.onchange=function()   // 当下拉框改变的时候

                {

                    This.change(this.index);

                }

            }

            this.first();//创建第一个

        },//初始化对象       

        add:function(key,val)

        {

            this.data[key]=val;

        },//添加数据

        first:function()

        {

            var arr=this.data[‘0‘];

            for(var i=0;i<arr.length;i++)

            {

                var opt=document.createElement(‘option‘);

                opt.innerHTML=arr[i];

                this.aSel[0].appendChild(opt);

            }

        },//创建第一个下拉菜单----元素添加数据

        change:function(now)

        {

            var str=‘0‘;

            for(i=0;i<now;i++)  //now====0,1,2  如果now=0,循环时str=0_0

            {

              str+=‘_‘+(this.aSel[i].selectedIndex-1); 

             //取得当前选中元素的下一级的数据

            }

            if(this.data[str]) //如果有数据

            {

                var arr=this.data[str];           

                this.aSel[now].options.length=1;

                for(var i=0;i<arr.length;i++)

                {

                   var opt=document.createElement(‘option‘);

                   opt.innerHTML=arr[i];

                   this.aSel[now].appendChild(opt);

                } // -------------------------------添加数据

               

                this.aSel[now].options[1].selected=true;

                now++;

                if(now<this.aSel.length)

                {

                    this.change(now);   // 更新下级

                }

            }

          else

          {

              for(var i=now;i<this.aSel.length;i++)

              {

                   this.aSel[i].options.length=1; 

              }// 返回默认值

          }

        }, // -------------------------change 结束

    }

</script>

</head>

 

<body>

<div id="div1"></div>

</body>

</html>

js 联动下拉菜单

标签:tee   col   type   nload   dex   style   fun   first   child   

原文地址:https://www.cnblogs.com/xuey/p/8456759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!