三级级联菜单的js实现(静态数组)

分析:

1. 首先定义window.onload来初始化级联菜单的初始值(一级菜单有值,其他的均为"请选择").

2. 定义一级菜单的onchange事件函数fun1,传递一级菜单的selectedIndex.通过selectedIndex获取二级菜单的options

3. 定义二级菜单的onchange事件函数fun2,传递二级菜单的selectedIndex,并获取一级菜单的selectedIndex,获取三级菜单中options的值.

4. 注意一级菜单变化与二级菜单变化的联动,即在fun1中默认选择option的selectedIndex同时关联fun2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>三级级联菜单</title>
    <style>
        #one,#two,#three{
            width: 300px;
            height: 35px;
        }
    </style>
</head>
<body>
    <form>
        <select id="one" onchange="fun1(this.selectedIndex)"></select>
        <select id="two" onchange="fun2(this.selectedIndex)"></select>
        <select id="three"></select>
    </form>
</body>
<script>
    //定义三个数组(静态的)
    var first = ["--请选择--","1","2","3"];
    var second = [["--请选择--"],["11","12","13"],["21","22","23"],["31","32","33"]];
    var third = [[["--请选择--"]],[["111","112","113"],["121","122","123"],["131","132","133"]],
                [["211","212","213"],["221","222","223"],["231","232","233"]],[["311","312","313"],
            ["321","322","323"], ["331","332","333"]]];
    //获取三个select的dom对象
    var one = document.getElementById("one");
    var two = document.getElementById("two");
    var three = document.getElementById("three");
    //定义window.onload的事件初始化页面
    window.onload =  function() {
        //初始化一级菜单的数组
        one.options.length = first.length;
        for (var i = 0; i < first.length; i++) {
            //option的文本
            one.options[i].text = first[i];
            //option代表的表单值
            one.options[i].value = first[i];
        }
        //初始化二级菜单
        two.options.length = 1;
        two.options[0].text = second[0][0];
        two.options[0].value = second[0][0];
        //初始化三级菜单
        three.options.length = 1;
        three.options[0].text = third[0][0][0];
        three.options[0].value = third[0][0][0];
    };
    //定义一级菜单发生改变时候二级菜单列表改变
    function fun1(index) {
        two.options.length = second[index].length;
        for (var i = 0; i < two.options.length; i++) {
            two.options[i].text = second[index][i];
            two.options[i].value = second[index][i];
            //默认选择第一列
            two.selectedIndex = 0;
            //关联fun2,实现二级change的同时三级也change
            fun2(0);
        }
    }

    //定义二级菜单发生改变时候三级菜单列表改变
    function fun2(index1) {
        var index = one.selectedIndex;
        three.options.length = third[index][index1].length;
        for (var i = 0; i < three.options.length; i++) {
            three.options[i].text = third[index][index1][i];
            three.options[i].value = third[index][index1][i];
            three.selectedIndex = 0;
        }
    }
</script>
</html>

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三级级联下拉菜单可以通过AJAX技术实现。具体实现步骤如下: 1. 在HTML页面中创建三个下拉菜单,分别表示三级菜单,每个下拉菜单的选项为空。 2. 给第一个下拉菜单绑定change事件,在该事件处理函数中使用AJAX发送请求,请求后台数据,获取第二级菜单的选项数据。 3. 在AJAX的回调函数中,将获取到的第二级菜单选项数据添加到第二个下拉菜单中。 4. 给第二个下拉菜单绑定change事件,在该事件处理函数中使用AJAX发送请求,请求后台数据,获取第三级菜单的选项数据。 5. 在AJAX的回调函数中,将获取到的第三级菜单选项数据添加到第三个下拉菜单中。 6. 用户选择完第三级菜单选项后,可以根据选项的值执行相应的操作。 示例代码如下: HTML代码: ``` <select id="province"> <option value="">请选择省份</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="area"> <option value="">请选择区县</option> </select> ``` JS代码: ``` // 获取省份数据 $.ajax({ url: 'getProvince.php', success: function(data) { // 将省份数据添加到第一个下拉菜单中 $('#province').html(data); } }); // 绑定省份下拉菜单change事件 $('#province').on('change', function() { var provinceId = $(this).val(); // 获取城市数据 $.ajax({ url: 'getCity.php', data: {provinceId: provinceId}, success: function(data) { // 将城市数据添加到第二个下拉菜单中 $('#city').html(data); } }); }); // 绑定城市下拉菜单change事件 $('#city').on('change', function() { var cityId = $(this).val(); // 获取区县数据 $.ajax({ url: 'getArea.php', data: {cityId: cityId}, success: function(data) { // 将区县数据添加到第三个下拉菜单中 $('#area').html(data); } }); }); // 绑定区县下拉菜单change事件 $('#area').on('change', function() { var areaId = $(this).val(); // 根据选项值执行相应操作 }); ``` 以上示例代码需要在后台编写getProvince.php、getCity.php、getArea.php三个文件,分别返回对应的下拉菜单选项数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值