1. 程式人生 > 其它 >js實現二級聯動

js實現二級聯動

完整版的程式碼如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>二級聯動</title>
</head>

<body>
    <select name="" id="provioce">
    </select>
    <select name="" id="city">
    </select>
    <!-- 
        如何實現聯動效果
     -->
    <script src="./area.js"></script>

    <script>
        // 如何實現聯動效果
        var provioce = document.querySelector('#provioce')
        var city = document.querySelector('#city')
        ranopt('#provioce', area)
        // 初始化市
        // 1: 獲取當前選中的省 
        // 2: 根據當前的省獲取市資料
        var provice_init = filterOptioned(provioce)
        // 3: 將拿到的市資料渲染到頁面上
        ranopt('#city', area[provice_init][0])
        // 當用戶選擇的省發生變化時市也隨著聯動
        provioce.addEventListener('change', function () {
            var provice_init = filterOptioned(provioce)
            console.log(1);
            ranopt('#city', area[provice_init][0])
        })
        // 封裝渲染頁面函式
        function ranopt(str, data) {
            var select = document.querySelector(str)
            select.innerHTML = ''
            for (const key in data) {
                var option = document.createElement('option')
                option.innerHTML = key
                select.appendChild(option)
            }
        }
        // 過濾某個select 選中了哪一個option的value
        function filterOptioned(selet) {
            // selet.innerHTML = ''
            for (let i = 0; i < selet.options.length; i++) {
                // selected option引數 選中為true 沒選中 false
                if (selet.options[i].selected) {
                    //返回option元素的value
                    return provioce.options[i].value
                }
            }

        }
    </script>
</body>

</html>