js写三级联动

 
<!DOCTYPE HTML>
<html>
<head>
<title>联动菜单</title>
<meta charset="utf-8" />
<script>
    /*使用 HTML DOM 的方式实现联动菜单*/
    var categories=[
{"id":10,"name":'男装',"children":[
    {"id":101,"name":'正装'},
    {"id":102,"name":'T恤'},
    {"id":103,"name":'裤衩'}
]},
{"id":20,"name":'女装',"children":[
    {"id":201,"name":'短裙'},
    {"id":202,"name":'连衣裙'},
    {"id":203,"name":'裤子',"children":[
        {"id":2031,"name":'长裤'},
        {"id":2031,"name":'九分裤'},
        {"id":2031,"name":'七分裤'}
    ]},
]},
{"id":30,"name":'童装',"children":[
    {"id":301,"name":'帽子'},
    {"id":302,"name":'套装',"children":[
        {"id":3021,"name":"0-3岁"},
        {"id":3021,"name":"3-6岁"},
        {"id":3021,"name":"6-9岁"},
        {"id":3021,"name":"9-12岁"}
    ]},
    {"id":303,"name":'手套'}
]}
];
    function createSel(cts){//传入包含一组类别对象的数组
        //创建select元素,保存在变量sel中
        var sel=document.createElement("select");
        //向sel添加一个新option,设置内容为"-请选择-",值为-1
        sel.add(new Option("-请选择-",-1));
        //遍历cts中的每个类别对象
        for(var i=0;i<cts.length;i++){
            //向sel中添加一个新option,设置内容为当前类别的内容,设置值为当前类别的id
            sel.add(new Option(cts[i].name,cts[i].id));
        }//(遍历结束)
        
        //cts:[{男装,},{女装,},{童装,children:[{sub1},...]
        //                      i-1
        sel.οnchange=function(){//this->sel
            //获得当前sel选中项的下标,保存在变量i中
            var i=this.selectedIndex;
            //获得cts中下标为i-1位置的子类型对象,保存在cate中
            var cate=cts[i-1];
            //反复删除category下的最后一个子节点,直到category的最后一个子节点就是当前sel时,退出循环
            while(category.lastChild!=this){
                category.removeChild(category.lastChild);
            }
            if(cate.children){//如果cate有children属性
                //调用createSel,传入cate的children数组作为参数
                createSel(cate.children);
            }
        }

        //将sel追加到id为category的元素中
        category.appendChild(sel);
    }
    window.οnlοad=function(){
        createSel(categories);
    }
</script>
</head>
<body>
    <div id="category"></div>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值