js 联动下拉菜单

Posted 雪剑无影

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 联动下拉菜单相关的知识,希望对你有一定的参考价值。

<!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 联动下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

Excel 如何实现五级下拉菜单联动

请问下拉菜单怎么联动数据变化?

js 联动下拉菜单

asp 下拉菜单的二级联动

asp 二级联动菜单

PHPCMS V9联动菜单下拉显示不全