使用js实现四级联动

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        四级联动:
        <select id="id01" name="name01" οnchange="method01(this)">
            <option value='-1'>请选择</option>
            <option value='0'>字母</option>
            <option value='1'>数字</option>
        </select>

        <select id="id02" name="name02" οnchange="method02(this)">
            <option value='-1'>请选择</option>
        </select>

        <select id="id03" name="name03" οnchange="method03(this)">
            <option value='-1'>请选择</option>
        </select>

        <select id="id04" name="name04">
            <option value='-1'>请选择</option>
        </select>
    </body>
    <script>
        var arr =
        [
            [
                [
                    ["大写", "A-O", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"],
                    ["大写", "P-Z", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
                ],
                [
                    ["小写", "a-o", "a", "b"],
                    ["小写", "p-z", "p", "q"]
                ]
            ],
            [
                [
                    ["阿拉伯数字", "个位数", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                    ["阿拉伯数字", "两位数", 10, 11, 12, 13, 14, 15, 16,17, 18, 19]
                ],
                [
                    ["中文数字", "个位数","零", "一", "二", "三", "四"],
                    ["中文数字", "两位数", "十", "十一", "十二", "十三", "十四"]
                ]
            ]
        ];

        function method01(s01) {
            //当点击选择了s01的任何一个时,重置所有的选项为  请选择
            var s02 = document.getElementById("id02");
            s02.innerHTML = "<option value='-1'>请选择</option>";
            var s03 = document.getElementById("id03");
            s03.innerHTML = "<option value='-1'>请选择</option>"
            var s04 = document.getElementById("id04");
            s04.innerHTML = "<option value='-1'>请选择</option>"
            if(s01.value != -1) {
                //根据s01对象的value值,来确定是选择了数字还是字母
                var arr2 = arr[s01.value]; //从四维数组中获取到一个三维数组

                for(var i = 0; i < arr2.length; i++) {
                    //遍历并得到里面的二维数组
                    var arr3 = arr2[i];
                    //获取到二维数组里面的第一个数组。得到一个一维数组
                    var arr4 = arr3[0];
                    //取一维数组的第一个值作为option内容
                    var option1 = document.createElement("option");
                    //给option添加索引  。后面需要根据索引确定选值
                    option1.value = i;
                    //只获取arr4的第一个元素,添加到选项中,此时的第一个元素无非就是广州、深圳。如果选云南,那么就是昆明、玉溪
                    var text1 = document.createTextNode(arr4[0]);
                    option1.appendChild(text1);
                    s02.appendChild(option1);
                }
            }
        }
        
        function method02(s02){
            var s01 = document.getElementById("id01");
            var s03 = document.getElementById("id03");
            s03.innerHTML = "<option value='-1'>请选择</option>"
            var s04 = document.getElementById("id04");
            s04.innerHTML = "<option value='-1'>请选择</option>"
            
            if(s02.value != -1){ //为什么要判断不等于-1,因为方法调用到此步了,如果等于-1,说明value是-1。那么,不添加元素。只显示请选择
                var arr2 = arr[s01.value];
                var arr3 = arr2[s02.value];
                for(var i = 0; i < arr3.length; i++){
                    var arr4 = arr3[i];
                    //取一维数组的第一个值作为option内容
                    var option2 = document.createElement("option");
                    //给option添加索引 在后续可以如同当前一样进行行根据索引来确定选值
                    option2.value = i;
                    var text2 = document.createTextNode(arr4[1]);
                    option2.appendChild(text2);
                    s03.appendChild(option2);
                }
            }
        }
        
        function method03(s03){
            var s01 = document.getElementById("id01");
            var s02 = document.getElementById("id02");
            var s04 = document.getElementById("id04");
            s04.innerHTML = "<option value='-1'>请选择</option>"
            
            if(s03.value != -1){
                var arr2 = arr[s01.value];
                var arr3 = arr2[s02.value];
                var arr4 = arr3[s03.value];
                for(var i = 2; i < arr4.length; i++){
                    var option3 = document.createElement("option");
                    //给option添加索引
                    option3.value = i - 2;
                    var text3 = document.createTextNode(arr4[i]);
                    option3.appendChild(text3);
                    s04.appendChild(option3);
                }
            }
        }
    </script>

</html>

转载于:https://my.oschina.net/u/3055497/blog/1820846

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML和JavaScript四级联动是一种常见的前端开发技术,用于实现多个下拉列表之间的关联关系。通过选择一个下拉列表的选项,可以动态改变其他下拉列表的内容。 实现四级联动的基本步骤如下: 1. 在HTML中创建多个下拉列表,每个下拉列表都有一个唯一的id属性。 2. 使用JavaScript编写事件处理函数,当第一个下拉列表的选项改变时,触发该函数。 3. 在事件处理函数中,根据第一个下拉列表的选项值,动态生成第二个下拉列表的选项。 4. 根据第二个下拉列表的选项值,动态生成第三个下拉列表的选项。 5. 根据第三个下拉列表的选项值,动态生成第四个下拉列表的选项。 以下是一个简单的示例代码: HTML部分: ```html <select id="first"> <option value="option1">选项1</option> <option value="option2">选项2</option> </select> <select id="second"></select> <select id="third"></select> <select id="fourth"></select> ``` JavaScript部分: ```javascript // 获取下拉列表元素 var firstSelect = document.getElementById("first"); var secondSelect = document.getElementById("second"); var thirdSelect = document.getElementById("third"); var fourthSelect = document.getElementById("fourth"); // 第一个下拉列表改变时触发事件处理函数 firstSelect.addEventListener("change", function() { // 根据选项值生成第二个下拉列表的选项 var selectedOption = firstSelect.value; // 根据selectedOption生成第二个下拉列表的选项 // ... // 清空第三个和第四个下拉列表的选项 thirdSelect.innerHTML = ""; fourthSelect.innerHTML = ""; }); // 第二个下拉列表改变时触发事件处理函数 secondSelect.addEventListener("change", function() { // 根据选项值生成第三个下拉列表的选项 var selectedOption = secondSelect.value; // 根据selectedOption生成第三个下拉列表的选项 // ... // 清空第四个下拉列表的选项 fourthSelect.innerHTML = ""; }); // 第三个下拉列表改变时触发事件处理函数 thirdSelect.addEventListener("change", function() { // 根据选项值生成第四个下拉列表的选项 var selectedOption = thirdSelect.value; // 根据selectedOption生成第四个下拉列表的选项 // ... }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值