原生 js 三级联动小例子

这是一个关于使用原生JavaScript实现三级联动效果的教程,包括展示效果图、HTML结构和JavaScript代码实现,并进行了简单总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原生 js 三级联动小例子

1效果图

在这里插入图片描述

2html

<body>
    <div id="category"></div>
</body>

3js

<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.onchange=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.onload=function(){
        createSel(categories);
    }
</script>

4总结

编译器生成html文件 把文件插入对应位置即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值