js 实现二级联动

摘要:在web开发中我们经常会遇到页面的一个二级联动技术,二级联动字面解释就是说我在选择一级select不同的option,下面的二级option的属性值在进行相应的变化。

在web开发中我们经常会遇到页面的一个二级联动技术,二级联动字面解释就是说我在选择一级select不同的option,下面的二级option的属性值在进行相应的变化。


onchange 事件

<body>
    <select id="province" onchange="func1()">
        <option value="shandong">山东</option>
        <option value="hebei">河北</option>
        <option value="beijing">北京</option>
    </select>

</body>
<script>
    function func1(){
        var pro = document.getElementById("province");
        console.log(pro.value)
    }
</script>


使用字典方式添加数据

一级数据显示

<body>
    <select id="province" >
    </select>

</body>
<script>
    data = {"广东省":["广州","佛山"],"北京":["海淀","廊坊"], "海南省":["三亚","海口"]};
    var pro = document.getElementById("province");
    for (var i in data){
        var option_pro = document.createElement("option");
        option_pro.innerHTML=i;
        pro.appendChild(option_pro);
    }
</script>


二级数据联动 方式一

<body>
    <select id="province" onchange="func1(this)" >
    </select>
    <select id="city"></select>
</body>
<script>
    data = {"广东省":["广州","佛山"],"北京":["海淀","廊坊"], "海南省":["三亚","海口"]};
    var pro  = document.getElementById("province");
    var city = document.getElementById("city");

    for (var i in data){
        var option_pro = document.createElement("option");
        option_pro.innerHTML=i;
        pro.appendChild(option_pro);
    }

    function func1(self){
        //console.log((self.options[self.selectedIndex]).innerHTML);
        var choice = (self.options[self.selectedIndex]).innerHTML;

        var options = city.children;
        for (var k=0; k<options.length; k++){
            city.removeChild(options[k--]);
        }

        for (var i in data[choice]){
            var option_city = document.createElement("option");
            option_city.innerHTML = data[choice][i];
            city.appendChild(option_city);
        }
    }
</script>


二级数据联动 方式二

<body>
    <select id="province" onchange="func1(this)" >
    </select>
    <select id="city"></select>
</body>
<script>
    data = {"广东省":["广州","佛山"],"北京":["海淀","廊坊"], "海南省":["三亚","海口"]};
    var pro  = document.getElementById("province");
    var city = document.getElementById("city");


    for (var i in data){
        var option_pro = document.createElement("option");
        option_pro.innerHTML=i;
        pro.appendChild(option_pro);
    }



    function func1(self){
        //console.log((self.options[self.selectedIndex]).innerHTML);
        var choice = (self.options[self.selectedIndex]).innerHTML;

        city.options.length=0;

        for (var i in data[choice]){
            var option_city = document.createElement("option");
            option_city.innerHTML = data[choice][i];
            city.appendChild(option_city);
        }
    }
</script>

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_2005