首頁 > web前端 > js教程 > js 實現省市區三級連動菜單效果

js 實現省市區三級連動菜單效果

高洛峰
發布: 2017-03-23 14:11:12
原創
2401 人瀏覽過

本文主要分享了js實作省市區三級連動選單效果的範例程式碼。具有很好的參考價值,以下跟著小編一起來看下吧

效果如下:

js 实现省市区三级联动菜单效果

程式碼如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

<!DOCTYPE html>

<html>

<head>

 <meta charset="utf-8">

 <title>省市区三级联动</title>

</head>

<body>

 <form>

 <select id="province">

  <option>请选择省份</option>

 </select>

 <select id="city">

  <option>请选择城市</option>

 </select>

 <select id="district">

  <option>请选择区域</option>

 </select>

 </form>

 <script src="json.js"></script>

 <script type="text/javascript">

 var proData = [],

  cityData = [],

  distData = [];

 var proSelect = document.getElementById("province"),

   citySelect = document.getElementById("city"),

   districtSelect = document.getElementById("district");

 var curPro = "",

  curCity = "";

 // 封装更新选择列表函数

 function fillselect(select,list){

  for (var i = select.length-1; i > 0 ; i--){

   select.remove(i);

  }

  list.forEach(function(data){

  var option = new Option(data.name, data.sheng);

  option.dataset.di = data.di;

  select.add(option);

  })

 }

 // 将数据按省、市、地区分别存储

 dataJson.forEach(function(data){

  if (data.level === 1){

  proData.push(data);

  }

  if (data.level === 2){

  cityData.push(data);

  }

  if (data.level === 3){

  distData.push(data);

  }

 })

 fillselect(proSelect,proData);

 // 监听一级省份选择列表change事件,更新二级城市列表

 proSelect.addEventListener("change",function(event){

  var val = event.target.value;

  var list = [];

  cityData.forEach(function(d){

  if (d.sheng === val) {

   list.push(d);

  }

  })

  fillselect(citySelect,list);

 })

 // 监听二级城市选择列表change事件,更新三级区域列表

 citySelect.addEventListener("change",function(event){

  var val = event.target.value;

  var curIndex = event.target.selectedIndex;

  curCity = event.target[curIndex].dataset.di;

  console.log(event.target,curCity);

  var list = [];

  distData.forEach(function(d){

  if (d.di === curCity && d.sheng === val) {

   list.push(d);

  }

  })

  fillselect(districtSelect,list);

 })

 </script>

</body>

</html>

登入後複製

更多js 實作省市區三級連動選單效果相關文章請關注PHP中文網!

相關文章:

用php實作城市地區三級連動附帶資料庫

實作ajax三級連動下拉選單的實例程式碼

Yii2實作中國省市區三級連動實例

#
相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板