原生js实现二级联动

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>表单联动</title>
    <style>
        #province,#city{
             200px;
            height: 100px;
        }
        p{
            cursor: pointer;
        }
        p:hover{
            background-color: gray;
        }
    </style>
</head>
<body>
    <h4>省份</h4>
        <select name="" id="province" multiple>
            
        </select>

    <h2>城市</h2>
        <select name="" id="city" multiple>

        </select>   
    
    <script>
            var x = [
                    [
                        ['0','1']
                    ]
            ]
            console.log(x)
        function dataElemnt(){   
            this.province = document.getElementById('province');
            this.city = document.getElementById('city');
            this.region = document.getElementById('region');
            // 数据保存 : 第一项 是省
            this.data = [ 
                            ['江西省','南昌市','宜春市','赣州市','吉安市','九江市','上饶市','抚州市','新余市'],
                            ['安徽省','合肥市','芜湖市','淮南市','马鞍山市'], 
                            ['江苏省','南京市','无锡市','无锡市','常州市','南通市']
                        ]
            }

        
        var object = new dataElemnt();
        
        // 初始化数据
        function city_data(){
            var data = object.data;
            // 初始化数据 
            for(var i=0; i<data.length; i++){
                // 创建默认省份
                var option = document.createElement('option');
                option.setAttribute('value','shen')
                var option_text = document.createTextNode( data[i][0] )
                option.appendChild( option_text )
                object.province.appendChild(option);
            }

        }

        // 点击 省 的时候
        function on_pro(){
            var pro = object.province;// select
            pro.onchange=function(){
                var index = pro.selectedIndex;  // 当前选中的索引值
                // console.log( index )
                var shen = pro.options[ index ].text;  // 选中的元素的值
                showCity(shen)
            }
            

        }

        // 显示数据
        function showCity(shen){
            var city = object.city;
            var data = object.data;
            for(var i=0; i<data.length; i++){
                if( shen == data[i][0]){

                    // 数据会叠加,清空数据
                    city.innerHTML ='';
                    for( var j=1; j< data[i].length; j++){
                        var option = document.createElement('option');
                        var option_text = document.createTextNode( data[i][j] );
                        option.appendChild( option_text )
                        city.appendChild( option );

                    }
                }
            }
        }

        // 加载执行
    window.onload=function(){
            city_data();
            on_pro();
            // 默认是江西省
            showCity('江西省');
            console.log( object.data)
    }
    </script>
</body>
</html>
原文地址:https://www.cnblogs.com/ar13/p/8000707.html