1. 程式人生 > >web 動態新增城市和二級聯動的實現

web 動態新增城市和二級聯動的實現

動態新增城市

  1. 需求:
    點選一個按鈕, 動態實現新增城市;

  2. 實現步驟:

    1. 確定事件型別onclick
    2. 對於事件繫結一個函式addLiElement()
      1. 獲取到使用者在input輸入框中填寫的資訊;
        city = document.getElementById(“city”).value
        city = document.getElementsByName(“city”)[0].value
        2). 建立一個城市的文字節點;document.createTextNode(‘xxxx’)
        3). 建立一個li的元素節點; document.createElement(‘xxxx’)
        4). 將文字節點新增到li元素節點裡面去;
        5). 將整體新增到ul標籤裡面去;
        使用appendChild()來新增子節點;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>

        function addCity(){
//            1) 獲取到使用者在input輸入框中填寫的資訊;
            var city  = document.getElementById("city").value;


//            2). 建立一個城市的文字節點;
            var textNode = document.createTextNode(city);


//            3). 建立一個li的元素節點;
            var liEleNode = document.createElement('li');


//            4). 將文字節點新增到li元素節點裡面去;
            liEleNode.appendChild(textNode);


//            5). 將整體新增到ul標籤裡面去;
            var ulEleNode = document.getElementById('ul_city');
            ulEleNode.appendChild(liEleNode);



        }


    </script>
</head>
<body>


    <input type="text" placeholder="請輸入城市" id='city'>
    <input type="submit" value="新增城市" onclick="addCity()">

<ul id="ul_city">
    <li>北京</li>
    <li>上海</li>
    <li>西安</li>
</ul>

</body>
</html>

在這裡插入圖片描述

二級聯動的實現

1. 需求分析

省市的二級聯動

2. 步驟實現

  • 1). 確定事件型別onchange, 併為其繫結一個函式;

  • 2). 修改下拉列表內容;

  • 2-1). 獲取使用者選擇的省份;

  • 2-2). 建立一個二維陣列, 用來儲存省份和城市的對應關係;

  • 2-3). 遍歷二維陣列中的省份;

  • 2-4). 遍歷時省份編號和使用者選擇的省份編號進行比較,

  • 2-5). 如果相同, 遍歷該省份下的所有城市;
    - 將每一個城市以城市名新增到select裡面去;

  • 2-6). 如果不相同, 繼續迴圈遍歷省份;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            margin: 0 auto;
            text-align: center;
            margin-top: 10%;
        }
    </style>


    <script>
        function changeCity() {

            // 1. 獲取使用者選擇的省份;
            var choiceProvince = document.getElementById('province').value;
//            alert(choiceProvince);
            // 2. 建立一個二維陣列, 用來儲存省份和城市的對應關係;
            // 如何建立二維陣列?
            var cites=new Array(3);
            // 預設的規則: 索引為0, 儲存陝西的城市;
            cites[0] = new Array("西安","寶雞","咸陽");
            cites[1] = new Array("成都","樂山","綿陽");
            cites[2] = new Array("濟南","青島","煙臺");


            //8. 找出關於城市的下拉列表(根據id=“city”)
            var selectEleNode = document.getElementById('city');
            // 9. 清空第二個下拉列表裡面的所有option標籤;
            selectEleNode.options.length = 0;

            // 3. 遍歷時省份編號和使用者選擇的省份編號進行比較
            for(var i = 0; i < cites.length; i++){
                //此處比較的是省份編號
                if  (choiceProvince == i){
                 // 4. 如果相同, 遍歷該省份下的所有城市  ;
                 for(var j=0; j<cites[i].length; j++){
//                     alert(cites[i][j]);
                     //5. 建立城市的文字節點;
                     var textNode = document.createTextNode(cites[i][j]);

                     //6. 建立option的元素節點
                     var optionEleNode = document.createElement("option");

                     //7. 將城市的文字節點追加到option元素節點裡面去;
                     optionEleNode.appendChild(textNode);



                     //9. 將option節點內容追加到select節點裡面去;
                     selectEleNode.appendChild(optionEleNode);


                 }


                }
                // 5. 如果不相同, 繼續迴圈遍歷省份;


            }

        }



    </script>
</head>
<body>
<form>
    <div>
        <span>籍貫:</span>
        <select id='province'  onchange="changeCity()">
            <option>--省份--</option>
            <option value="0">陝西省</option>
            <option value="1">四川省</option>
            <option value="2">山東省</option>
        </select>
        <select id="city">
            <option>--市區--</option>
        </select>
    </div>
</form>
</body>
</html>

在這裡插入圖片描述
在這裡插入圖片描述