DOM/BOM题库

DOM/BOM 课堂题库 

菜鸟Dom知识点

购物车

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     <title>Document</title>
  7     <style>
  8         * {
  9             padding: 0;
 10             margin: 0;
 11         }
 12 
 13         table {
 14             width: 800px;
 15             margin: 100px auto;
 16             text-align: center;
 17             border-collapse: collapse;
 18         }
 19 
 20         thead {
 21             background-color: darkcyan;
 22         }
 23 
 24 
 25         tr th,
 26         tr td {
 27             height: 50px;
 28             line-height: 50px;
 29             border: 1px solid #ccc;
 30         }
 31     </style>
 32 </head>
 33 <body>
 34      <table>
 35          <thead>
 36              <tr>
 37                  <th><input type="checkbox" name="" id=""> </th>
 38                  <th>商品</th>
 39                  <th>数量</th>
 40                  <th>价钱</th>
 41              </tr>
 42          </thead>
 43          <tbody>
 44              <!-- <tr>
 45                  <td><input type="checkbox" name="" id=""></td>
 46                  <td>华为</td>
 47                  <td>5000</td>
 48              </tr>
 49              <tr>
 50                  <td><input type="checkbox" name="" id=""></td>
 51                  <td>华为</td>
 52                  <td>5000</td>
 53              </tr>
 54              <tr>
 55                  <td><input type="checkbox" name="" id=""></td>
 56                  <td>华为</td>
 57                  <td>5000</td>
 58              </tr>
 59              <tr>
 60                  <td><input type="checkbox" name="" id=""></td>
 61                  <td>华为</td>
 62                  <td>5000</td>
 63              </tr> -->
 64          </tbody>
 65          <tfoot>
 66             <tr>
 67                 <td>总价</td>
 68                 <td colspan="3" ></td>
 69             </tr>
 70         </tfoot>
 71      </table>
 72      <script>
 73         // 商品列表
 74         let proList = [
 75             { name: 'iPone8',      count:1, price: '8000' },
 76             { name: 'ipad Pro',    count:2, price: '500' },
 77             { name: 'iPad Air',    count:3, price: '2000' },
 78             { name: 'Apple Watch', count:4, price: '2000' }
 79         ];
 80 
 81         // 获取元素对象
 82         // 全选
 83         let all = document.querySelector('thead input');
 84 
 85         // tbody
 86         let tbody = document.querySelector('tbody');
 87 
 88 
 89          // 渲染tbody页面后 才能获取到 tbody中的元素  否则获取不到
 90         for (let i = 0; i < proList.length; i++ ) {
 91              tbody.innerHTML += `
 92              <tr>
 93                  <td><input type="checkbox" name="" id=""></td>
 94                  <td>${proList[i].name}</td>
 95                  <td>${proList[i].count}</td>
 96                  <td>${proList[i].price}</td>
 97              </tr>
 98              `;
 99         }
100 
101 
102 
103         // tbody 中复选框
104         let lis = document.querySelectorAll('tbody input');
105         // 总价
106         let tr = document.querySelector('tfoot tr');
107       
108         // 全选功能
109         all.onclick = function () {
110             for (let i = 0; i < lis.length; i++) {
111                 lis[i].checked = all.checked;
112             }
113 
114             // 计算价格
115             tr.lastElementChild.innerHTML = getPrice();
116         }
117 
118 
119         // 单选功能
120         // 绑定单选事件
121         for (let i = 0; i < lis.length; i++) {
122             lis[i].onclick = function () {
123                 // 设置全选
124                 all.checked = isAll();
125                  // 计算价格
126                 tr.lastElementChild.innerHTML = getPrice();
127             }
128         }
129 
130 
131         // 是否全选
132         function isAll () {
133             let num = 0; // 复选框选中的个数
134             for (let i = 0; i < lis.length; i++) {
135                   // 选中
136                    if (lis[i].checked == true) {
137                       num +=1;
138                    }
139             }
140             return num == lis.length;
141         }
142 
143 
144         // 重新计算价格
145         function getPrice () {
146             let sum = 0;
147             for (let i = 0; i < lis.length; i++ ) {
148                 if (lis[i].checked) {
149                     let tr = lis[i].parentNode.parentNode;
150                     sum += tr.children[2].innerHTML * tr.children[3].innerHTML;
151                 }
152             }
153 
154             return sum;
155         }
156 
157    
158      </script>
159 
160 
161 </body>
162 </html>
购物车.html

微博发布案例

主:

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5   <meta charset="UTF-8">
  6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8   <title>Document</title>
  9   <link rel="stylesheet" href="css/weibo.css">
 10 </head>
 11 
 12 <body>
 13   <div class="w">
 14     <div class="controls">
 15       <img src="images/tip.png" alt=""><br>
 16       <textarea placeholder="说点什么吧..." id="area" cols="30" rows="10" maxlength="200"></textarea>
 17       <div>
 18         <span class="useCount">0</span>
 19         <span>/</span>
 20         <span>200</span>
 21         <button id="send">发布</button>
 22       </div>
 23 
 24     </div>
 25     <div class="contentList">
 26       <ul>
 27         <!-- 微博的模板 -->
 28         <!-- <li>
 29           <div class="info">
 30             <img src="./images/07-魏延.jpg">
 31             <span>魏延</span>
 32             <p>2020-12-23 09:38:38</p>
 33           </div>
 34           <div class="content">
 35             我爱编程,编程使我快乐
 36           </div>
 37           <div class="del">
 38             <span>删除</span>
 39           </div>
 40         </li> -->
 41       </ul>
 42     </div>
 43   </div>
 44   <!-- js操作 -->
 45   <script>
 46     // 1.1 列表,渲染页面列表的数据
 47     let list = [];
 48 
 49     // 1.2 生成随机头像和随机姓名的数据列表
 50     let users = [{
 51         src: './images/01-常遇春.jpg',
 52         name: '常遇春',
 53       },
 54       {
 55         src: './images/02-徐延昭.jpg',
 56         name: '徐延昭'
 57       },
 58       {
 59         src: './images/03-花振芳.jpg',
 60         name: '花振芳'
 61       },
 62       {
 63         src: './images/04-濮天雕.jpg',
 64         name: '濮天雕'
 65       },
 66       {
 67         src: './images/05-费德功.jpg',
 68         name: '费德功'
 69       },
 70       {
 71         src: './images/06-窦尔敦.jpg',
 72         name: '窦尔敦'
 73       },
 74       {
 75         src: './images/07-魏延.jpg',
 76         name: '魏延'
 77       }
 78     ];
 79 
 80     // 2 获取需要的dom元素
 81     // 文本域的dom元素对象
 82     let area = document.querySelector('#area');
 83     // 发送
 84     let send = document.querySelector('#send');
 85     // 输入字符串内容的个数
 86     let useCount = document.querySelector('.useCount');
 87     // 用户评论列表的ul容器
 88     let ul = document.querySelector('ul');
 89     // 本地存储
 90     ul.innerHTML = sessionStorage.getItem('wul');
 91     // 3.绑定事件
 92     send.addEventListener('click', function (event) {
 93       // 兼容event
 94       event = event || window.event;
 95       // 获取用户输入的内容 判断是不是空字符串
 96       if (area.value.trim() == '') {
 97         alert('输入的内容不能为空,请重新输入');
 98         // 设置用户输入的内容的长度为0
 99         useCount.innerHTML = '0';
100         // 后面代码不执行
101         return;
102       }
103 
104 
105       // 随机下标
106       let index = getRandom(0, users.length - 1);
107 
108       // 从前新增数据
109       list.unshift({
110         name: users[index]['name'], // 随机用户名
111         src: users[index]['src'], // 用户头像
112         time: getDate(), // 评论的时间
113         text: area.value.trim() // 用户评论的内容
114       });
115 
116       // 清空文本域的内容
117       area.value = '';
118       // 设置用户输入的内容的长度为0
119       useCount.innerHTML = '0';
120 
121 
122 
123       // 根据数据列表渲染页面
124       render();
125 
126       // 本地存储
127       sessionStorage.setItem('wul', ul.innerHTML);
128 
129     });
130 
131     // area 文本域输入框绑定键盘弹起事件
132     // area.addEventListener('keyup', function () {
133     //      // 设置用输入输入的个数
134     //      useCount.innerHTML = this.value.length;
135     // });
136 
137 
138     // input 事件  给表单使用  内容发生变化 会触发input
139     area.addEventListener('input', function () {
140       // 设置用输入输入的个数
141       useCount.innerHTML = this.value.length;
142     });
143 
144 
145     // ul 添加点击事件
146     ul.addEventListener('click', function (e = e || window.event) {
147       // 兼容
148       // event = event || window.event;
149       // 是不是点击的删除
150       if (event.target.innerHTML == '删除') {
151         // 获取自定义属性data-index  数组下标
152         let index = +event.target.getAttribute('data-index');
153         // 删除当前项
154         list.splice(index, 1);
155         // 从新渲染页面
156         render();
157       }
158 
159 
160     });
161 
162 
163 
164 
165 
166 
167 
168     // let index = getRandom(0,users.length -1);
169     // console.log(users[index]);
170 
171 
172 
173     // 封装随机数
174     function getRandom(min, max) {
175       return Math.floor(Math.random() * (max - min + 1) + min);
176     }
177 
178     // 封装时间
179     function getDate() {
180       // 创建日期对象
181       let date = new Date();
182       //
183       let y = date.getFullYear();
184       // 月份 从0 开始
185       let m = date.getMonth() + 1;
186       //
187       let d = date.getDate();
188       //
189       let h = date.getHours();
190       //
191       let mm = date.getMinutes();
192       //
193       let s = date.getSeconds();
194 
195       return `${y}-${m}-${d} ${h}:${mm}:${s}`;
196     }
197 
198 
199     // 封装渲染用户列表的页面
200     function render() {
201       ul.innerHTML = list.map(function (item, index) {
202         return `  <li>
203                           <div class="info">
204                             <img src="${item.src}">
205                             <span>${item.name}</span>
206                             <p>${item.time}</p>
207                           </div>
208                           <div class="content">
209                             ${item.text}
210                           </div>
211                           <div class="del">
212                             <span data-index=${index}>删除</span>
213                           </div>
214                        </li>
215              `;
216       }).join('');
217     }
218   </script>
219 </body>
220 
221 </html>
weibo.html

副:

 1 * {
 2   margin: 0;
 3   padding: 0;
 4 }
 5 ul {
 6   list-style: none;
 7 }
 8 .w {
 9   width: 900px;
10   margin:0 auto;
11 }
12 .controls textarea {
13   width: 878px;
14   height: 100px;
15   resize: none;
16   border-radius: 10px;
17   outline:none;
18   padding-left: 20px;
19   padding-top:10px;
20   font-size: 18px;
21 }
22 .controls {
23   overflow: hidden;
24 }
25 
26 .controls div {
27   float: right;
28 }
29 .controls div span {
30   color:#666;
31 }
32 .controls div .useCount {
33   color:red;
34 }
35 .controls div button {
36   width: 100px;
37   outline: none;
38   border:none;
39   background: rgb(0, 132, 255);
40   height: 30px;
41   cursor: pointer;
42   color:#fff;
43   font:bold 14px '宋体';
44   transition: all 0.5s;
45 }
46 .controls div button:hover {
47   background: rgb(0, 225, 255);
48 }
49 .controls div button:disabled {
50   background: rgba(0, 225, 255,0.5);
51 }
52 .contentList {
53   margin-top:50px;
54 }
55 .contentList li {
56   padding: 20px 0;
57   border-bottom: 1px dashed #ccc;
58 }
59 .contentList li .info {
60   position: relative;
61 }
62 .contentList li .info span {
63   position: absolute;
64   top:15px;
65   left:100px;
66   font:bold 16px '宋体';
67 }
68 .contentList li .info p {
69   position: absolute;
70   top:40px;
71   left: 100px;
72   color:#aaa;
73   font-size: 12px;
74 }
75 .contentList img {
76   width: 80px;
77   border-radius: 50%;
78   border: 1px solid red;
79 }
80 .contentList li .content {
81   padding-left: 100px;
82   color: #666;
83   word-break: break-all; 
84 }
85 
86 .contentList li .del{
87    margin-left: 800px;
88    margin-top: -30px;
89    background-color: green;
90    color:#fff;
91    padding: 5px 0;
92    text-align: center;
93 }
94 
95 .contentList li .del span{
96   display: block;
97 }
weibo.css

分页(数据库渲染)

主:

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5   <meta charset="UTF-8">
  6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8   <title>Document</title>
  9   <style>
 10     * {
 11       padding: 0;
 12       margin: 0;
 13       list-style: none;
 14     }
 15 
 16     .warp {
 17       margin: 100px auto;
 18 
 19     }
 20 
 21     .warp ul {
 22       margin-bottom: 50px;
 23       margin-left: 200px;
 24     }
 25 
 26     .page {
 27       margin-left: 200px;
 28       display: flex;
 29       /* text-align: center; */
 30     }
 31 
 32     .page span {
 33       display: inline-block;
 34       width: 36px;
 35       height: 36px;
 36       line-height: 36px;
 37       text-align: center;
 38       border: 1px solid #ddd;
 39       border-radius: 8px;
 40       margin: 0 8px;
 41     }
 42 
 43     .page span.active {
 44       background-color: green;
 45       color: #fff;
 46     }
 47 
 48     .prev,
 49     .next {
 50       width: 50px;
 51       height: 36px;
 52       line-height: 36px;
 53       text-align: center;
 54       border: 1px solid #ddd;
 55       border-radius: 8px;
 56     }
 57 
 58     .select {
 59       margin-left: 20px;
 60       width: 50px;
 61     }
 62   </style>
 63 </head>
 64 
 65 <body>
 66   <div class="warp">
 67     <ul>
 68       <!-- <li>第一项</li>
 69           <li>dierxiang</li>
 70           <li>askhdjkcs</li> -->
 71     </ul>
 72     <div class="page">
 73       <div class="prev">上一页</div>
 74       <div class="content">
 75         <!-- <span>1</span>
 76                    <span>2</span>
 77                    <span>3</span> -->
 78       </div>
 79       <div class="next">下一页</div>
 80       <select name="" id="" class="select">
 81         <!-- <option>10<option>
 82               <option>20<option> -->
 83       </select>
 84 
 85     </div>
 86   </div>
 87   <script src="./data.js"></script>
 88   <script>
 89     // 1.获取ul
 90     let ul = document.querySelector('ul');
 91     // 2.获取页码容器
 92     let content = document.querySelector('.content');
 93     // 3.一页显示10条数据
 94     let pageSize = 10;
 95     // 4.当前页码
 96     let pageIndex = 1;
 97     // 5.总共多少页
 98     let pageCount = Math.ceil( data.data.length / pageSize);
 99     // 6.当前页的数据
100     let list = [];
101     // 7.渲染内容
102     render();
103     // 8.渲染页码
104     renderPage()
105     // 9.给页码绑定点击事件
106     content.addEventListener('click',function (e = e || window.event) {
107        if (e.target.nodeName == 'SPAN') {
108            // 点击第几页
109            pageIndex = +e.target.getAttribute('data-index');
110            console.log(pageIndex,'pageIndex');
111            // 重新渲染页面
112            render();
113            // 渲染页码
114            renderPage();
115        }
116     });
117 
118 
119     // 第一页
120     // 第1-第10条数据
121     // data.data.slice(0,10)  对应下标0-10
122 
123     // 第二页
124     // 11-20
125     // data.data.slice(10,20)
126 
127     // 第页
128     // 21-30
129     // data.data.slice(20,30)
130 
131     // data.data.slice((页码-1)*一页显示的数量,  页码*一页显示的数量 )
132     data.data.slice((pageIndex-1)* pageSize,   pageIndex*pageSize )
133 
134 
135 
136 
137 
138 
139 
140 
141     // 渲染内容
142     function render () {
143         // 当前页数据源 
144         list = data.data.slice((pageIndex -1) * pageSize, pageIndex * pageSize);
145         ul.innerHTML = list.map(function (item) {
146              return `<li>${item.Name}</li>`;
147         }).join('');
148     }
149 
150     // 渲染页码
151     function renderPage () {
152        let str = '';
153        for (let i = 1; i <=pageCount; i++) {
154           str += `<span data-index = ${i} class=${ pageIndex == i ? 'active' :'' } >${i}</span>`;
155        }
156        content.innerHTML = str;
157     }
158   </script>
159 </body>
160 
161 </html>
index(老师).html

副:

  1 let list = {
  2     "code": 1,
  3     "msg": "成功",
  4     "data": [{
  5         "MasterID": "9",
  6         "Name": "奥迪",
  7         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_9_100.png",
  8         "Spelling": "Aodi",
  9         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2017\/09\/22\/c3c70104705ff62e_86_32.png"
 10     }, {
 11         "MasterID": "97",
 12         "Name": "阿斯顿·马丁",
 13         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_97_100.png",
 14         "Spelling": "Asidunmading",
 15         "tagurl": ""
 16     }, {
 17         "MasterID": "92",
 18         "Name": "阿尔法·罗密欧",
 19         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_92_100.png",
 20         "Spelling": "Aerfaluomiou",
 21         "tagurl": ""
 22     }, {
 23         "MasterID": "289",
 24         "Name": "ARCFOX",
 25         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_289_100.png",
 26         "Spelling": "ARCFOX",
 27         "tagurl": ""
 28     }, {
 29         "MasterID": "26",
 30         "Name": "本田",
 31         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_26_100.png",
 32         "Spelling": "Bentian",
 33         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2017\/09\/22\/410af256c1e43e55_86_32.png"
 34     }, {
 35         "MasterID": "2",
 36         "Name": "奔驰",
 37         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_2_100.png",
 38         "Spelling": "Benchi",
 39         "tagurl": ""
 40     }, {
 41         "MasterID": "127",
 42         "Name": "别克",
 43         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_127_100.png",
 44         "Spelling": "Bieke",
 45         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2017\/09\/22\/0e673462afde3a3b_86_32.png"
 46     }, {
 47         "MasterID": "3",
 48         "Name": "宝马",
 49         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_3_100.png",
 50         "Spelling": "Baoma",
 51         "tagurl": ""
 52     }, {
 53         "MasterID": "15",
 54         "Name": "比亚迪",
 55         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_15_100.png",
 56         "Spelling": "Biyadi",
 57         "tagurl": ""
 58     }, {
 59         "MasterID": "157",
 60         "Name": "宝骏",
 61         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_157_100.png",
 62         "Spelling": "Baojun",
 63         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2016\/09\/29\/14a3548ac14e4247_86_32.png"
 64     }, {
 65         "MasterID": "5",
 66         "Name": "标致",
 67         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_5_100.png",
 68         "Spelling": "Biaozhi",
 69         "tagurl": ""
 70     }, {
 71         "MasterID": "82",
 72         "Name": "保时捷",
 73         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_82_100.png",
 74         "Spelling": "Baoshijie",
 75         "tagurl": ""
 76     }, {
 77         "MasterID": "163",
 78         "Name": "北京",
 79         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_163_100.png",
 80         "Spelling": "Beijing",
 81         "tagurl": ""
 82     }, {
 83         "MasterID": "211",
 84         "Name": "北汽幻速",
 85         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_211_100.png",
 86         "Spelling": "Beiqihuansu",
 87         "tagurl": ""
 88     }, {
 89         "MasterID": "195",
 90         "Name": "北汽绅宝",
 91         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_195_100.png",
 92         "Spelling": "Beiqishenbao",
 93         "tagurl": ""
 94     }, {
 95         "MasterID": "59",
 96         "Name": "奔腾",
 97         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_59_100.png",
 98         "Spelling": "Benteng",
 99         "tagurl": ""
100     }, {
101         "MasterID": "236",
102         "Name": "宝沃",
103         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_236_100.png",
104         "Spelling": "Baowo",
105         "tagurl": ""
106     }, {
107         "MasterID": "85",
108         "Name": "宾利",
109         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_85_100.png",
110         "Spelling": "Binli",
111         "tagurl": ""
112     }, {
113         "MasterID": "14",
114         "Name": "北汽制造",
115         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_14_100.png",
116         "Spelling": "Beiqizhizao",
117         "tagurl": ""
118     }, {
119         "MasterID": "168",
120         "Name": "北汽威旺",
121         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_168_100.png",
122         "Spelling": "Beiqiweiwang",
123         "tagurl": ""
124     }, {
125         "MasterID": "216",
126         "Name": "北汽新能源",
127         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_216_100.png",
128         "Spelling": "Beiqixinnengyuan",
129         "tagurl": ""
130     }, {
131         "MasterID": "263",
132         "Name": "比速",
133         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_263_100.png",
134         "Spelling": "Bisu",
135         "tagurl": ""
136     }, {
137         "MasterID": "129",
138         "Name": "北汽昌河",
139         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_129_100.png",
140         "Spelling": "BEIQICHANGHE",
141         "tagurl": ""
142     }, {
143         "MasterID": "282",
144         "Name": "北汽道达",
145         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_282_100.png",
146         "Spelling": "BEIQIDAODA",
147         "tagurl": ""
148     }, {
149         "MasterID": "136",
150         "Name": "长安汽车",
151         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_136_100.png",
152         "Spelling": "CHANGANQICHE",
153         "tagurl": ""
154     }, {
155         "MasterID": "159",
156         "Name": "长安欧尚",
157         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_159_100.png",
158         "Spelling": "Changanoushang",
159         "tagurl": ""
160     }, {
161         "MasterID": "21",
162         "Name": "长城",
163         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_21_100.png",
164         "Spelling": "Changcheng",
165         "tagurl": ""
166     }, {
167         "MasterID": "281",
168         "Name": "长安轻型车",
169         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_281_100.png",
170         "Spelling": "CHANGANQINGXINGCHE",
171         "tagurl": ""
172     }, {
173         "MasterID": "283",
174         "Name": "长安跨越",
175         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_283_100.png",
176         "Spelling": "CHANGANKUAYUE",
177         "tagurl": ""
178     }, {
179         "MasterID": "8",
180         "Name": "大众",
181         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_8_100.png",
182         "Spelling": "Dazhong",
183         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2016\/09\/29\/cf80cb915f060f26_86_32.png"
184     }, {
185         "MasterID": "115",
186         "Name": "东风风行",
187         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_115_100.png",
188         "Spelling": "Dongfengfengxing",
189         "tagurl": ""
190     }, {
191         "MasterID": "253",
192         "Name": "东风风光",
193         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_253_100.png",
194         "Spelling": "Dongfengfengguang",
195         "tagurl": ""
196     }, {
197         "MasterID": "141",
198         "Name": "东风风神",
199         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_141_100.png",
200         "Spelling": "Dongfengfengshen",
201         "tagurl": ""
202     }, {
203         "MasterID": "29",
204         "Name": "东南",
205         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_29_100.png",
206         "Spelling": "Dongnan",
207         "tagurl": ""
208     }, {
209         "MasterID": "113",
210         "Name": "道奇",
211         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_113_100.png",
212         "Spelling": "Daoqi",
213         "tagurl": ""
214     }, {
215         "MasterID": "179",
216         "Name": "DS",
217         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_179_100.png",
218         "Spelling": "Ds",
219         "tagurl": ""
220     }, {
221         "MasterID": "205",
222         "Name": "东风小康",
223         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_205_100.png",
224         "Spelling": "Dongfengxiaokang",
225         "tagurl": ""
226     }, {
227         "MasterID": "197",
228         "Name": "东风风度",
229         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_197_100.png",
230         "Spelling": "Dongfengfengdu",
231         "tagurl": ""
232     }, {
233         "MasterID": "27",
234         "Name": "东风",
235         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_27_100.png",
236         "Spelling": "Dongfeng",
237         "tagurl": ""
238     }, {
239         "MasterID": "294",
240         "Name": "电咖",
241         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_294_100.png",
242         "Spelling": "DIANKA",
243         "tagurl": ""
244     }, {
245         "MasterID": "7",
246         "Name": "丰田",
247         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_7_100.png",
248         "Spelling": "Fengtian",
249         "tagurl": ""
250     }, {
251         "MasterID": "17",
252         "Name": "福特",
253         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_17_100.png",
254         "Spelling": "Fute",
255         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2016\/09\/29\/644268f586e023c8_86_32.png"
256     }, {
257         "MasterID": "91",
258         "Name": "法拉利",
259         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_91_100.png",
260         "Spelling": "Falali",
261         "tagurl": ""
262     }, {
263         "MasterID": "128",
264         "Name": "福田",
265         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_128_100.png",
266         "Spelling": "Futian",
267         "tagurl": ""
268     }, {
269         "MasterID": "40",
270         "Name": "菲亚特",
271         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_40_100.png",
272         "Spelling": "Feiyate",
273         "tagurl": ""
274     }, {
275         "MasterID": "67",
276         "Name": "福迪",
277         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_67_100.png",
278         "Spelling": "Fudi",
279         "tagurl": ""
280     }, {
281         "MasterID": "208",
282         "Name": "福汽启腾",
283         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_208_100.png",
284         "Spelling": "Fuqiqiteng",
285         "tagurl": ""
286     }, {
287         "MasterID": "147",
288         "Name": "广汽传祺",
289         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_147_100.png",
290         "Spelling": "Guangqichuanqi",
291         "tagurl": ""
292     }, {
293         "MasterID": "182",
294         "Name": "观致",
295         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_182_100.png",
296         "Spelling": "Guangzhi",
297         "tagurl": ""
298     }, {
299         "MasterID": "109",
300         "Name": "GMC",
301         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_109_100.png",
302         "Spelling": "Gmc",
303         "tagurl": ""
304     }, {
305         "MasterID": "63",
306         "Name": "广汽吉奥",
307         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_63_100.png",
308         "Spelling": "Guangqijiao",
309         "tagurl": ""
310     }, {
311         "MasterID": "290",
312         "Name": "国金",
313         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_290_100.png",
314         "Spelling": "GUOJIN",
315         "tagurl": ""
316     }, {
317         "MasterID": "295",
318         "Name": "广汽新能源",
319         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_295_100.png",
320         "Spelling": "GUANGQIXINNENGYUAN",
321         "tagurl": ""
322     }, {
323         "MasterID": "196",
324         "Name": "哈弗",
325         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_196_100.png",
326         "Spelling": "Hafu",
327         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2016\/09\/21\/858acf18f497dfb3_86_32.png"
328     }, {
329         "MasterID": "32",
330         "Name": "海马",
331         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_32_100.png",
332         "Spelling": "Haima",
333         "tagurl": ""
334     }, {
335         "MasterID": "58",
336         "Name": "红旗",
337         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_58_100.png",
338         "Spelling": "Hongqi",
339         "tagurl": ""
340     }, {
341         "MasterID": "259",
342         "Name": "汉腾",
343         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_259_100.png",
344         "Spelling": "Hanteng",
345         "tagurl": ""
346     }, {
347         "MasterID": "112",
348         "Name": "华泰",
349         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_112_100.png",
350         "Spelling": "Huatai",
351         "tagurl": ""
352     }, {
353         "MasterID": "52",
354         "Name": "黄海",
355         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_52_100.png",
356         "Spelling": "Huanghai",
357         "tagurl": ""
358     }, {
359         "MasterID": "225",
360         "Name": "华颂",
361         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_225_100.png",
362         "Spelling": "Huasong",
363         "tagurl": ""
364     }, {
365         "MasterID": "181",
366         "Name": "恒天",
367         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_181_100.png",
368         "Spelling": "Hengtian",
369         "tagurl": ""
370     }, {
371         "MasterID": "292",
372         "Name": "华骐",
373         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_292_100.png",
374         "Spelling": "HUAQI",
375         "tagurl": ""
376     }, {
377         "MasterID": "34",
378         "Name": "吉利",
379         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_34_100.png",
380         "Spelling": "Jili",
381         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2017\/09\/22\/fb6d758f38036da0_86_32.png"
382     }, {
383         "MasterID": "4",
384         "Name": "Jeep",
385         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_4_100.png",
386         "Spelling": "Jipu",
387         "tagurl": ""
388     }, {
389         "MasterID": "35",
390         "Name": "江淮",
391         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_35_100.png",
392         "Spelling": "Jianghuai",
393         "tagurl": ""
394     }, {
395         "MasterID": "98",
396         "Name": "捷豹",
397         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_98_100.png",
398         "Spelling": "Jiebao",
399         "tagurl": ""
400     }, {
401         "MasterID": "39",
402         "Name": "金杯",
403         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_39_100.png",
404         "Spelling": "Jinbei",
405         "tagurl": ""
406     }, {
407         "MasterID": "37",
408         "Name": "江铃",
409         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_37_100.png",
410         "Spelling": "Jiangling",
411         "tagurl": ""
412     }, {
413         "MasterID": "57",
414         "Name": "金龙",
415         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_57_100.png",
416         "Spelling": "Jinlong",
417         "tagurl": ""
418     }, {
419         "MasterID": "152",
420         "Name": "九龙",
421         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_152_100.png",
422         "Spelling": "Jiulong",
423         "tagurl": ""
424     }, {
425         "MasterID": "279",
426         "Name": "君马",
427         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_279_100.png",
428         "Spelling": "Junma",
429         "tagurl": ""
430     }, {
431         "MasterID": "296",
432         "Name": "捷途",
433         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_296_100.png",
434         "Spelling": "JIETU",
435         "tagurl": ""
436     }, {
437         "MasterID": "107",
438         "Name": "凯迪拉克",
439         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_107_100.png",
440         "Spelling": "Kaidilake",
441         "tagurl": ""
442     }, {
443         "MasterID": "220",
444         "Name": "凯翼",
445         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_220_100.png",
446         "Spelling": "Kaiyi",
447         "tagurl": ""
448     }, {
449         "MasterID": "150",
450         "Name": "开瑞",
451         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_150_100.png",
452         "Spelling": "Kairui",
453         "tagurl": ""
454     }, {
455         "MasterID": "51",
456         "Name": "克莱斯勒",
457         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_51_100.png",
458         "Spelling": "Kelaisile",
459         "tagurl": ""
460     }, {
461         "MasterID": "214",
462         "Name": "卡升",
463         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_214_100.png",
464         "Spelling": "Kasheng",
465         "tagurl": ""
466     }, {
467         "MasterID": "213",
468         "Name": "卡威",
469         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_213_100.png",
470         "Spelling": "Kawei",
471         "tagurl": ""
472     }, {
473         "MasterID": "96",
474         "Name": "路虎",
475         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_96_100.png",
476         "Spelling": "Luhu",
477         "tagurl": ""
478     }, {
479         "MasterID": "94",
480         "Name": "雷克萨斯",
481         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_94_100.png",
482         "Spelling": "Leikesasi",
483         "tagurl": ""
484     }, {
485         "MasterID": "36",
486         "Name": "陆风",
487         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_36_100.png",
488         "Spelling": "Lufeng",
489         "tagurl": ""
490     }, {
491         "MasterID": "16",
492         "Name": "铃木",
493         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_16_100.png",
494         "Spelling": "Lingmu",
495         "tagurl": ""
496     }, {
497         "MasterID": "153",
498         "Name": "猎豹",
499         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_153_100.png",
500         "Spelling": "Liebao",
501         "tagurl": ""
502     }, {
503         "MasterID": "99",
504         "Name": "雷诺",
505         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_99_100.png",
506         "Spelling": "Leinuo",
507         "tagurl": ""
508     }, {
509         "MasterID": "95",
510         "Name": "林肯",
511         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_95_100.png",
512         "Spelling": "Linken",
513         "tagurl": ""
514     }, {
515         "MasterID": "76",
516         "Name": "力帆",
517         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_76_100.png",
518         "Spelling": "Lifan",
519         "tagurl": ""
520     }, {
521         "MasterID": "86",
522         "Name": "兰博基尼",
523         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_86_100.png",
524         "Spelling": "Lanbojini",
525         "tagurl": ""
526     }, {
527         "MasterID": "80",
528         "Name": "劳斯莱斯",
529         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_80_100.png",
530         "Spelling": "Laosilaisi",
531         "tagurl": ""
532     }, {
533         "MasterID": "83",
534         "Name": "路特斯",
535         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_83_100.png",
536         "Spelling": "Lutesi",
537         "tagurl": ""
538     }, {
539         "MasterID": "267",
540         "Name": "领克",
541         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_267_100.png",
542         "Spelling": "Lingke",
543         "tagurl": ""
544     }, {
545         "MasterID": "18",
546         "Name": "马自达",
547         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_18_100.png",
548         "Spelling": "Mazida",
549         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2016\/09\/21\/6202bb9b632ea532_86_32.png"
550     }, {
551         "MasterID": "93",
552         "Name": "玛莎拉蒂",
553         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_93_100.png",
554         "Spelling": "Mashaladi",
555         "tagurl": ""
556     }, {
557         "MasterID": "79",
558         "Name": "名爵",
559         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_79_100.png",
560         "Spelling": "Mingjue",
561         "tagurl": ""
562     }, {
563         "MasterID": "81",
564         "Name": "MINI",
565         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_81_100.png",
566         "Spelling": "Mini",
567         "tagurl": ""
568     }, {
569         "MasterID": "183",
570         "Name": "迈凯伦",
571         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_183_100.png",
572         "Spelling": "Maikailun",
573         "tagurl": ""
574     }, {
575         "MasterID": "155",
576         "Name": "纳智捷",
577         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_155_100.png",
578         "Spelling": "Nazhijie",
579         "tagurl": ""
580     }, {
581         "MasterID": "300",
582         "Name": "欧尚汽车",
583         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_300_100.png",
584         "Spelling": "OUSHANGQICHE",
585         "tagurl": ""
586     }, {
587         "MasterID": "84",
588         "Name": "讴歌",
589         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_84_100.png",
590         "Spelling": "Ouge",
591         "tagurl": ""
592     }, {
593         "MasterID": "231",
594         "Name": "前途",
595         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_231_100.png",
596         "Spelling": "Qiantu",
597         "tagurl": ""
598     }, {
599         "MasterID": "28",
600         "Name": "起亚",
601         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_28_100.png",
602         "Spelling": "Qiya",
603         "tagurl": ""
604     }, {
605         "MasterID": "42",
606         "Name": "奇瑞",
607         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_42_100.png",
608         "Spelling": "Qirui",
609         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2016\/09\/29\/a048876e75aac1f9_86_32.png"
610     }, {
611         "MasterID": "43",
612         "Name": "庆铃",
613         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_43_100.png",
614         "Spelling": "Qingling",
615         "tagurl": ""
616     }, {
617         "MasterID": "156",
618         "Name": "启辰",
619         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_156_100.png",
620         "Spelling": "Qichen",
621         "tagurl": ""
622     }, {
623         "MasterID": "30",
624         "Name": "日产",
625         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_30_100.png",
626         "Spelling": "Richan",
627         "tagurl": ""
628     }, {
629         "MasterID": "78",
630         "Name": "荣威",
631         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_78_100.png",
632         "Spelling": "Rongwei",
633         "tagurl": ""
634     }, {
635         "MasterID": "10",
636         "Name": "斯柯达",
637         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_10_100.png",
638         "Spelling": "Sikeda",
639         "tagurl": ""
640     }, {
641         "MasterID": "25",
642         "Name": "三菱",
643         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_25_100.png",
644         "Spelling": "Sanling",
645         "tagurl": ""
646     }, {
647         "MasterID": "111",
648         "Name": "斯巴鲁",
649         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_111_100.png",
650         "Spelling": "Sibalu",
651         "tagurl": ""
652     }, {
653         "MasterID": "165",
654         "Name": "上汽大通",
655         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_165_100.png",
656         "Spelling": "Shangqidatong",
657         "tagurl": ""
658     }, {
659         "MasterID": "102",
660         "Name": "双龙",
661         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_102_100.png",
662         "Spelling": "Shuanglong",
663         "tagurl": ""
664     }, {
665         "MasterID": "89",
666         "Name": "smart",
667         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_89_100.png",
668         "Spelling": "Smart",
669         "tagurl": ""
670     }, {
671         "MasterID": "260",
672         "Name": "SWM斯威",
673         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_260_100.png",
674         "Spelling": "Swmsiwei",
675         "tagurl": ""
676     }, {
677         "MasterID": "244",
678         "Name": "上喆汽车",
679         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_244_100.png",
680         "Spelling": "S",
681         "tagurl": ""
682     }, {
683         "MasterID": "189",
684         "Name": "特斯拉",
685         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_189_100.png",
686         "Spelling": "Tesila",
687         "tagurl": ""
688     }, {
689         "MasterID": "175",
690         "Name": "腾势",
691         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_175_100.png",
692         "Spelling": "Tngshi",
693         "tagurl": ""
694     }, {
695         "MasterID": "202",
696         "Name": "泰卡特",
697         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_202_100.png",
698         "Spelling": "Taikate",
699         "tagurl": ""
700     }, {
701         "MasterID": "48",
702         "Name": "五菱",
703         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_48_100.png",
704         "Spelling": "Wuling",
705         "tagurl": ""
706     }, {
707         "MasterID": "19",
708         "Name": "沃尔沃",
709         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_19_100.png",
710         "Spelling": "Woerwo",
711         "tagurl": ""
712     }, {
713         "MasterID": "132",
714         "Name": "五十铃",
715         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_132_100.png",
716         "Spelling": "Wushiling",
717         "tagurl": ""
718     }, {
719         "MasterID": "207",
720         "Name": "潍柴英致",
721         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_207_100.png",
722         "Spelling": "Weichaiyingzhi",
723         "tagurl": ""
724     }, {
725         "MasterID": "266",
726         "Name": "蔚来",
727         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_266_100.png",
728         "Spelling": "Weilai",
729         "tagurl": ""
730     }, {
731         "MasterID": "270",
732         "Name": "WEY",
733         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_270_100.png",
734         "Spelling": "Wei",
735         "tagurl": ""
736     }, {
737         "MasterID": "298",
738         "Name": "威马汽车",
739         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_298_100.png",
740         "Spelling": "WEIMAQICHE",
741         "tagurl": ""
742     }, {
743         "MasterID": "13",
744         "Name": "现代",
745         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_13_100.png",
746         "Spelling": "Xiandai",
747         "tagurl": "http:\/\/picture.eclicks.cn\/g1\/l\/2016\/09\/29\/5f2e2fc0c06078d5_86_32.png"
748     }, {
749         "MasterID": "49",
750         "Name": "雪佛兰",
751         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_49_100.png",
752         "Spelling": "Xuefolan",
753         "tagurl": ""
754     }, {
755         "MasterID": "6",
756         "Name": "雪铁龙",
757         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_6_100.png",
758         "Spelling": "Xuetielong",
759         "tagurl": ""
760     }, {
761         "MasterID": "87",
762         "Name": "西雅特",
763         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_87_100.png",
764         "Spelling": "Xiyate",
765         "tagurl": ""
766     }, {
767         "MasterID": "286",
768         "Name": "星驰",
769         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_286_100.png",
770         "Spelling": "XINGCHI",
771         "tagurl": ""
772     }, {
773         "MasterID": "100",
774         "Name": "英菲尼迪",
775         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_100_100.png",
776         "Spelling": "Yingfeinidi",
777         "tagurl": ""
778     }, {
779         "MasterID": "53",
780         "Name": "一汽",
781         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_53_100.png",
782         "Spelling": "Yiqi",
783         "tagurl": ""
784     }, {
785         "MasterID": "258",
786         "Name": "驭胜",
787         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_258_100.png",
788         "Spelling": "Yusheng",
789         "tagurl": ""
790     }, {
791         "MasterID": "138",
792         "Name": "野马",
793         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_138_100.png",
794         "Spelling": "Yema",
795         "tagurl": ""
796     }, {
797         "MasterID": "41",
798         "Name": "依维柯",
799         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_41_100.png",
800         "Spelling": "Yiweike",
801         "tagurl": ""
802     }, {
803         "MasterID": "75",
804         "Name": "永源",
805         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_75_100.png",
806         "Spelling": "Yongyuan",
807         "tagurl": ""
808     }, {
809         "MasterID": "194",
810         "Name": "亚星客车",
811         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_194_100.png",
812         "Spelling": "Yaxingkeche",
813         "tagurl": ""
814     }, {
815         "MasterID": "285",
816         "Name": "云度",
817         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_285_100.png",
818         "Spelling": "YUNDU",
819         "tagurl": ""
820     }, {
821         "MasterID": "291",
822         "Name": "裕路",
823         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_291_100.png",
824         "Spelling": "YULU",
825         "tagurl": ""
826     }, {
827         "MasterID": "77",
828         "Name": "众泰",
829         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_77_100.png",
830         "Spelling": "Zhongtai",
831         "tagurl": ""
832     }, {
833         "MasterID": "60",
834         "Name": "中华",
835         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_60_100.png",
836         "Spelling": "Zhonghua",
837         "tagurl": ""
838     }, {
839         "MasterID": "33",
840         "Name": "中兴",
841         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_33_100.png",
842         "Spelling": "Zhongxing",
843         "tagurl": ""
844     }, {
845         "MasterID": "233",
846         "Name": "知豆",
847         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_233_100.png",
848         "Spelling": "Zhidou",
849         "tagurl": ""
850     }, {
851         "MasterID": "203",
852         "Name": "之诺",
853         "CoverPhoto": "http:\/\/image.bitautoimg.com\/bt\/car\/default\/images\/logo\/masterbrand\/png\/100\/m_203_100.png",
854         "Spelling": "Zhinuo",
855         "tagurl": ""
856     }],
857     "timestamp": 1544535759,
858     "version": 1
859 }
860 
861 
862 let content = document.querySelector('.content');
863 console.log(Math.floor(list.data.length / 10));
864 for (let i = 1; i < list.data.length / 10; i++) {
865     let span = document.createElement('span');
866     span.innerHTML = `${i}`;
867     content.appendChild(span);
868 }
869 
870 
871 let spans = document.querySelectorAll('span');
872 let ul = document.querySelector('ul');
873 let prev = document.querySelector('.prev');
874 let next = document.querySelector('.next');
875 let act = 0;
876 for (let i = 0; i < Math.floor(list.data.length / 10) ; i++) {
877     spans[i].addEventListener('click', function () {
878         for (let j = 0; j < Math.floor(list.data.length / 10); j++) {
879             spans[j].className = '';
880         }
881         spans[i].className = 'active';
882 
883         // 渲染
884         let md = list.data.slice((i) * 10, (i + 1) * 10);
885         let add = md.map(function (items) {
886             return `<li>${items.Name}</li>`;
887         }).join('');
888         ul.innerHTML = add;
889         act = i;
890     })
891     
892 }
893 prev.addEventListener('click', function () {
894     act--;
895     keyi();
896 })
897 next.addEventListener('click', function () {
898     act++;
899     keyi();
900 })
901 function keyi() {
902     for (let j = 0; j < Math.floor(list.data.length / 10); j++) {
903         spans[j].className = '';
904     }
905     spans[act].className = 'active';
906     let md = list.data.slice(act * 10, (act+1) * 10);
907     let add = md.map(function (items) {
908         return `<li>${items.Name}</li>`;
909     }).join('');
910     ul.innerHTML = add;
911 }
data.js
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7   <title>Document</title>
 8   <style> 
 9      * {
10        padding: 0;
11        margin: 0;
12        list-style: none;
13      }
14 
15      .warp {
16         margin:100px auto;
17 
18      }
19      .warp ul {
20          margin-bottom: 50px;
21          margin-left: 200px;
22      }
23      .page {
24         margin-left: 200px;
25         display: flex;
26         /* text-align: center; */
27      }
28      .page span {
29          display: inline-block;
30          width: 36px;
31          height:36px;
32          line-height: 36px;
33          text-align: center;
34          border: 1px solid #ddd;
35          border-radius: 8px;
36          margin: 0 8px;
37      }
38      /* 666 */
39      .page span.active{
40         background-color: green;
41         color: #fff;
42      }
43      .prev,.next {
44         width: 50px;
45         height: 36px;
46         line-height: 36px;
47         text-align: center;
48         border:1px solid #ddd;
49         border-radius: 8px;
50      }
51      .select {
52        margin-left: 20px;
53        width: 50px;
54      }
55   
56   </style>
57 </head>
58 <body>
59       <div class="warp">
60         <ul>
61           <!-- <li>第一项</li>
62           <li>dierxiang</li>
63           <li>askhdjkcs</li> -->
64         </ul>
65         <div class="page">
66           <div class="prev">上一页</div>
67           <div class="content">
68               <!-- <span>1</span>
69                    <span>2</span>
70                    <span>3</span> -->
71           </div>
72           <div class="next">下一页</div>
73           <select name="" id="" class="select">
74               <option>10<option>
75               <!-- <option>20<option> -->
76           </select>
77          
78         </div>
79         
80 
81 
82       </div>
83       
84 </body>
85 <script src="./data.js"></script>
86 
87 </html>
index.html

拖拽

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <title>Document</title>
 7     <style>
 8         .box {
 9             width: 200px;
10             height: 200px;
11             background-color: pink;
12             position: absolute;
13         }
14     </style>
15 </head>
16 <body>
17       <div class="box"></div>
18       <script>
19           // 1.获取box
20           let box = document.querySelector('.box');
21           // 记录鼠标的坐标
22           let pos = {};
23           // 开关
24           let flag = false;
25 
26           // 2.鼠标按下
27           box.addEventListener('mousedown', function (e = e || window.event) {
28               // 打开开关
29               flag = true;
30                 // 记录鼠标在盒子中的位置
31                 //   pos.x = e.pageX - this.offsetLeft;
32                 //   pos.y = e.pageY - this.offsetTop;
33 
34                // 直接通过事件对象e.offsetX 得鼠标在盒子中的x坐标,e.offsetY 得到鼠标在盒子中的Y坐标
35                pos.x = e.offsetX;
36                pos.y = e.offsetY;
37           });
38           // 3.鼠标移动
39           document.addEventListener('mousemove', function (e = e || window.event) {
40                // 发生在鼠标按下以后
41                if (flag) {
42                     box.style.left =  e.pageX - pos.x + 'px';
43                     box.style.top =  e.pageY - pos.y + 'px';
44                }
45           });
46           // 4. 鼠标弹起
47           document.addEventListener('mouseup', function () {
48             //   console.log(3);
49                flag = false;
50           });
51 
52 
53 
54 
55       </script>
56 </body>
57 </html>
拖拽.html

放大镜

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     <title>Document</title>
  7     <style>
  8         * {
  9             padding: 0;
 10             margin: 0;
 11         }
 12 
 13         .wrap {
 14             width: 1400px;
 15             margin: 100px auto;
 16         }
 17         .wrap .small {
 18             width: 600px;
 19             height: 400px;
 20             margin-right: 20px;
 21             position: relative;
 22             float: left;
 23         }
 24 
 25         .wrap .small img {
 26             width: 600px;
 27             height: 400px;
 28         }
 29 
 30         .wrap .big {
 31             width: 600px;
 32             height: 400px;
 33             position: relative;
 34             overflow: hidden;
 35             display: none;
 36             float: left;
 37         }
 38 
 39         .wrap .big img {
 40             width: 1200px;
 41             height: 800px;
 42             position:absolute;
 43         }
 44 
 45         .small .mask {
 46             position:absolute;
 47             top: 0;
 48             left: 0;
 49             width: 200px;
 50             height: 200px;
 51             background-color: rgba(0,0,0,.5);
 52             display: none;
 53         }
 54 
 55     </style>
 56 </head>
 57 <body>
 58        <div class="wrap">
 59              <div class="small">
 60                  <img src="./images/3.jpg" alt="">
 61                  <div class="mask"></div>
 62              </div>
 63              <div class="big">
 64                  <img src="./images/3.jpg" alt="">
 65              </div>
 66        </div>
 67       
 68        <script>
 69            // 1.获取左侧small
 70            let small = document.querySelector('.small');
 71            // 获取遮罩层
 72            let mask = document.querySelector('.mask');
 73            // 获取右侧大盒子big
 74            let big = document.querySelector('.big');
 75            // 获取大图片
 76            let bigImg = document.querySelector('.big img');
 77            // 遮罩的坐标
 78            let maskPos = {}; 
 79 
 80            // 给small添加鼠标经过 显示遮罩 和右侧大盒子big
 81            small.addEventListener('mouseover', function (e = e || window.event) {
 82                 // 显示遮罩层
 83                 mask.style.display = 'block';
 84                 // 显示big
 85                 big.style.display = 'block';
 86            });
 87 
 88             // 给small添加鼠标经过 显示遮罩 和右侧大盒子big
 89             small.addEventListener('mouseout', function (e = e || window.event) {
 90                 // 显示遮罩层
 91                 mask.style.display = 'none';
 92                 // 显示big
 93                 big.style.display = 'none';
 94            });
 95 
 96            // 给small添加mousemove事件
 97            small.addEventListener('mousemove', function (e = e || window.event) {
 98                  // 设置遮罩的坐标,并且设置鼠标为遮罩的中心点(- mask.offsetWidth / 2)
 99                  maskPos.left = e.pageX - small.offsetLeft - mask.offsetWidth / 2;
100                  maskPos.top = e.pageY - small.offsetTop - mask.offsetHeight / 2;
101                 
102                  // 限制遮罩移动的范围
103                  // 遮罩水平方向移动最大的距离
104                  let x = small.offsetWidth - mask.offsetWidth;
105                  // 遮罩垂直移动最大的距离
106                  let y = small.offsetHeight - mask.offsetHeight;
107                  // 水平方向最小值
108                  if (maskPos.left < 0) {
109                     maskPos.left = 0;
110                  }
111                  
112                 // 水平方向最大值
113                 if (maskPos.left > x ) {
114                     maskPos.left = x
115                 }
116                 // 垂直方向最小值
117                 if (maskPos.top < 0) {
118                     maskPos.top = 0
119                 }
120                 // 垂直方向最大值
121                 if (maskPos.top > y ) {
122                     maskPos.top = y 
123                 }
124             mask.style.left = maskPos.left  + 'px';
125             mask.style.top =  maskPos.top +  'px';
126 
127 
128             // 比例  遮挡层移动距离(maskPos.left) / 遮挡层的最大移动距离(x) = 大图片的移动距离(未知) /  大图片最大移动距离(可以计算出来)
129             //  大图片最大移动距离
130             let bigMax = bigImg.offsetWidth - big.offsetWidth;
131 
132             bigImg.style.left = - maskPos.left * bigMax / x + 'px';
133             bigImg.style.top =  - maskPos.top *  bigMax / y + 'px';
134 
135            });
136 
137        
138 
139        </script>
140 </body>
141 </html>
glass.html

动画封装

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         .box {
10             width: 200px;
11             height: 200px;
12             background-color: pink;
13             position: absolute;
14             left: 200px;
15             top: 100px;
16         }
17 
18         .p1 {
19             width: 150px;
20             height: 150px;
21             background-color: blue;
22             position: absolute;
23             top: 300px;
24             left: 0;
25         }
26     </style>
27 </head>
28 
29 <body>
30     <div class="box"></div>
31     <p class="p1"></p>
32     <button>向钱进</button>
33     <script>
34 
35         // 获取box
36         let box = document.querySelector('.box');
37         let p = document.querySelector('.p1');
38         let btn = document.querySelector('button');
39         // animate(p, 500);
40 
41         // 绑定点击事件
42         btn.addEventListener('click', function () {
43             animate(box, 1000 , function () {
44                 box.style.backgroundColor = 'red';
45             },15);
46         });
47 
48         // obj= {};
49         // obj.name = '张三'
50         function animate(ele, target, callback,time) {
51             // 先清除上一个定时器
52             clearInterval(ele.timeId);
53             // 开启定时器
54             ele.timeId = setInterval(function () {
55                 // step 每个20毫秒移动的距离
56                 // 1. 步长
57                 let step = (target - ele.offsetLeft) / 10;
58                 step = step > 0 ? Math.ceil(step) : Math.floor(step);
59                 // 3. == ? >= 
60                 console.log(ele.offsetLeft);
61                 if (ele.offsetLeft == target) {
62                     clearInterval(ele.timeId);
63                     // 回调函数
64                     // 0 undefined NaN null ''  =>false
65                     if ( typeof callback == 'function') {
66                         callback();
67                     }
68                     // 后面所有代码不执行
69                     return;
70                 }
71                 // 2.移动的位置
72                 ele.style.left = ele.offsetLeft + step + 'px';
73             },time);
74         }
75 
76 
77     </script>
78 </body>
79 
80 </html>
动画封装.html

高级轮播图

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <title>Document</title>
  8     <style>
  9         * {
 10             padding: 0;
 11             margin: 0;
 12         }
 13 
 14         .slide {
 15             width: 1000px;
 16             height: 720px;
 17             margin: 100px auto;
 18             position: relative;
 19             overflow: hidden;
 20         }
 21 
 22         .prev,
 23         .next {
 24             width: 80px;
 25             height: 60px;
 26             line-height: 60px;
 27             text-align: center;
 28             position: absolute;
 29             top: 50%;
 30             margin-top: -30px;
 31             background-color: rgba(0, 0, 0, .5);
 32             font-size: 36px;
 33             color: #fff;
 34             border-radius: 10px;
 35             display: none;
 36         }
 37 
 38         .prev {
 39             left: 10px;
 40         }
 41 
 42         .next {
 43             right: 10px;
 44         }
 45 
 46         .nav {
 47             display: flex;
 48             justify-content: space-between;
 49             width: 200px;
 50             height: 24px;
 51             position: absolute;
 52             left: 50%;
 53             bottom: 20px;
 54             margin-left: -100px;
 55             z-index: 10;
 56         }
 57 
 58         .nav span {
 59             width: 20px;
 60             height: 20px;
 61             border-radius: 50%;
 62             background-color: #fff;
 63         }
 64 
 65         .slide .active {
 66             background-color: #666;
 67         }
 68     </style>
 69 </head>
 70 
 71 <body>
 72     <div class="slide">
 73         <!-- 图片 -->
 74         <img src="./imgs/1.png" alt="">
 75         <!-- 上一张 -->
 76         <div class="prev">&lt;</div>
 77         <!-- 下一张 -->
 78         <div class="next">&gt;</div>
 79 
 80         <!-- 小圆圈 -->
 81         <div class="nav">
 82             <!-- <span></span>
 83                 <span></span>
 84                 <span></span>
 85                 <span></span> -->
 86         </div>
 87         
 88     </div>
 89     <script>
 90         let img = document.querySelector('img');
 91         let slide = document.querySelector('.slide');
 92         let prev = document.querySelector('.prev');
 93         let next = document.querySelector('.next');
 94         let nav = document.querySelector('.nav');
 95 
 96         let arr = ['./imgs/1.png', './imgs/2.png', './imgs/3.png', './imgs/4.png'];
 97         let i = 0;
 98         autoPlay();
 99 
100         //   自动轮播
101         function autoPlay() {
102             setInterval(function () {
103                 i = ++i > arr.length - 1 ? 0 : i++;
104                 render();
105             }, 1000);
106         }
107         //  渲染图片
108         function render() {
109             img.src = arr[i];
110         }
111         // 渲染圆
112         function renderpage() {
113             nav.innerHTML = arr.map(function (item, index) {
114                 return `<span class = "${}"></span>`;
115             });
116         }
117     </script>
118 </body>
119 
120 </html>
高级轮播图.html

思路:

  • 渲染的重复使用,使用innerhtml加数组map进行渲染,结尾加join
  • 三元表达式的替代if语句
  • 函数内局部变量和全局变量范围
  • +e.target.getAttribute('data-index')获取自定义类名

知识点

  • e.target.nodeName == 'SPAN';e的节点名(大写)

三级联动

   1 var data = [
   2     {
   3     name: '上海',
   4     cityList: [{
   5         name: '市辖区',
   6         areaList: ['黄浦区', '卢湾区', '徐汇区', '长宁区', '静安区', '普陀区', '闸北区', '虹口区', '杨浦区', '闵行区', '宝山区', '嘉定区', '浦东新区', '金山区', '松江区', '青浦区', '南汇区', '奉贤区']
   7     },
   8     {
   9         name: '县',
  10         areaList: ['崇明县']
  11     }
  12     ]
  13   },
  14 {
  15     name: '北京',
  16     cityList: [{
  17         name: '市辖区',
  18         areaList: ['东城区', '西城区', '崇文区', '宣武区', '朝阳区', '丰台区', '石景山区', '海淀区', '门头沟区', '房山区', '通州区', '顺义区', '昌平区', '大兴区', '怀柔区', '平谷区']
  19     },
  20     {
  21         name: '县',
  22         areaList: ['密云县', '延庆县']
  23     }
  24     ]
  25 },
  26 {
  27     name: '天津',
  28     cityList: [{
  29         name: '市辖区',
  30         areaList: ['和平区', '河东区', '河西区', '南开区', '河北区', '红桥区', '塘沽区', '汉沽区', '大港区', '东丽区', '西青区', '津南区', '北辰区', '武清区', '宝坻区']
  31     },
  32     {
  33         name: '县',
  34         areaList: ['宁河县', '静海县', '蓟 县']
  35     }
  36     ]
  37 },
  38 {
  39     name: '重庆',
  40     cityList: [{
  41         name: '市辖区',
  42         areaList: ['万州区', '涪陵区', '渝中区', '大渡口区', '江北区', '沙坪坝区', '九龙坡区', '南岸区', '北碚区', '万盛区', '双桥区', '渝北区', '巴南区', '黔江区', '长寿区']
  43     },
  44     {
  45         name: '县',
  46         areaList: ['綦江县', '潼南县', '铜梁县', '大足县', '荣昌县', '璧山县', '梁平县', '城口县', '丰都县', '垫江县', '武隆县', '忠 县', '开 县', '云阳县', '奉节县', '巫山县', '巫溪县', '石柱土家族自治县', '秀山土家族苗族自治县', '酉阳土家族苗族自治县', '彭水苗族土家族自治县']
  47     },
  48     {
  49         name: '市',
  50         areaList: ['江津市', '合川市', '永川市', '南川市']
  51     }
  52     ]
  53 },
  54 {
  55     name: '四川',
  56     cityList: [{
  57         name: '成都市',
  58         areaList: ['市辖区', '锦江区', '青羊区', '金牛区', '武侯区', '成华区', '龙泉驿区', '青白江区', '新都区', '温江县', '金堂县', '双流县', '郫 县', '大邑县', '蒲江县', '新津县', '都江堰市', '彭州市', '邛崃市', '崇州市']
  59     },
  60     {
  61         name: '自贡市',
  62         areaList: ['市辖区', '自流井区', '贡井区', '大安区', '沿滩区', '荣 县', '富顺县']
  63     },
  64     {
  65         name: '攀枝花市',
  66         areaList: ['市辖区', '东 区', '西 区', '仁和区', '米易县', '盐边县']
  67     },
  68     {
  69         name: '泸州市',
  70         areaList: ['市辖区', '江阳区', '纳溪区', '龙马潭区', '泸 县', '合江县', '叙永县', '古蔺县']
  71     },
  72     {
  73         name: '德阳市',
  74         areaList: ['市辖区', '旌阳区', '中江县', '罗江县', '广汉市', '什邡市', '绵竹市']
  75     },
  76     {
  77         name: '绵阳市',
  78         areaList: ['市辖区', '涪城区', '游仙区', '三台县', '盐亭县', '安 县', '梓潼县', '北川羌族自治县', '平武县', '江油市']
  79     },
  80     {
  81         name: '广元市',
  82         areaList: ['市辖区', '市中区', '元坝区', '朝天区', '旺苍县', '青川县', '剑阁县', '苍溪县']
  83     },
  84     {
  85         name: '遂宁市',
  86         areaList: ['市辖区', '船山区', '安居区', '蓬溪县', '射洪县', '大英县']
  87     },
  88     {
  89         name: '内江市',
  90         areaList: ['市辖区', '市中区', '东兴区', '威远县', '资中县', '隆昌县']
  91     },
  92     {
  93         name: '乐山市',
  94         areaList: ['市辖区', '市中区', '沙湾区', '五通桥区', '金口河区', '犍为县', '井研县', '夹江县', '沐川县', '峨边彝族自治县', '马边彝族自治县', '峨眉山市']
  95     },
  96     {
  97         name: '南充市',
  98         areaList: ['市辖区', '顺庆区', '高坪区', '嘉陵区', '南部县', '营山县', '蓬安县', '仪陇县', '西充县', '阆中市']
  99     },
 100     {
 101         name: '眉山市',
 102         areaList: ['市辖区', '东坡区', '仁寿县', '彭山县', '洪雅县', '丹棱县', '青神县']
 103     },
 104     {
 105         name: '宜宾市',
 106         areaList: ['市辖区', '翠屏区', '宜宾县', '南溪县', '江安县', '长宁县', '高 县', '珙 县', '筠连县', '兴文县', '屏山县']
 107     },
 108     {
 109         name: '广安市',
 110         areaList: ['市辖区', '广安区', '岳池县', '武胜县', '邻水县', '华莹市']
 111     },
 112     {
 113         name: '达州市',
 114         areaList: ['市辖区', '通川区', '达 县', '宣汉县', '开江县', '大竹县', '渠 县', '万源市']
 115     },
 116     {
 117         name: '雅安市',
 118         areaList: ['市辖区', '雨城区', '名山县', '荥经县', '汉源县', '石棉县', '天全县', '芦山县', '宝兴县']
 119     },
 120     {
 121         name: '巴中市',
 122         areaList: ['市辖区', '巴州区', '通江县', '南江县', '平昌县']
 123     },
 124     {
 125         name: '资阳市',
 126         areaList: ['市辖区', '雁江区', '安岳县', '乐至县', '简阳市']
 127     },
 128     {
 129         name: '阿坝藏族羌族自治州',
 130         areaList: ['汶川县', '理 县', '茂 县', '松潘县', '九寨沟县', '金川县', '小金县', '黑水县', '马尔康县', '壤塘县', '阿坝县', '若尔盖县', '红原县']
 131     },
 132     {
 133         name: '甘孜藏族自治州',
 134         areaList: ['康定县', '泸定县', '丹巴县', '九龙县', '雅江县', '道孚县', '炉霍县', '甘孜县', '新龙县', '德格县', '白玉县', '石渠县', '色达县', '理塘县', '巴塘县', '乡城县', '稻城县', '得荣县']
 135     },
 136     {
 137         name: '凉山彝族自治州',
 138         areaList: ['西昌市', '木里藏族自治县', '盐源县', '德昌县', '会理县', '会东县', '宁南县', '普格县', '布拖县', '金阳县', '昭觉县', '喜德县', '冕宁县', '越西县', '甘洛县', '美姑县', '雷波县']
 139     }
 140     ]
 141 },
 142 {
 143     name: '贵州',
 144     cityList: [{
 145         name: '贵阳市',
 146         areaList: ['市辖区', '南明区', '云岩区', '花溪区', '乌当区', '白云区', '小河区', '开阳县', '息烽县', '修文县', '清镇市']
 147     },
 148     {
 149         name: '六盘水市',
 150         areaList: ['钟山区', '六枝特区', '水城县', '盘 县']
 151     },
 152     {
 153         name: '遵义市',
 154         areaList: ['市辖区', '红花岗区', '汇川区', '遵义县', '桐梓县', '绥阳县', '正安县', '道真仡佬族苗族自治县', '务川仡佬族苗族自治县', '凤冈县', '湄潭县', '余庆县', '习水县', '赤水市', '仁怀市']
 155     },
 156     {
 157         name: '安顺市',
 158         areaList: ['市辖区', '西秀区', '平坝县', '普定县', '镇宁布依族苗族自治县', '关岭布依族苗族自治县', '紫云苗族布依族自治县']
 159     },
 160     {
 161         name: '铜仁地区',
 162         areaList: ['铜仁市', '江口县', '玉屏侗族自治县', '石阡县', '思南县', '印江土家族苗族自治县', '德江县', '沿河土家族自治县', '松桃苗族自治县', '万山特区']
 163     },
 164     {
 165         name: '黔西南布依族苗族自治州',
 166         areaList: ['兴义市', '兴仁县', '普安县', '晴隆县', '贞丰县', '望谟县', '册亨县', '安龙县']
 167     },
 168     {
 169         name: '毕节地区',
 170         areaList: ['毕节市', '大方县', '黔西县', '金沙县', '织金县', '纳雍县', '威宁彝族回族苗族自治县', '赫章县']
 171     },
 172     {
 173         name: '黔东南苗族侗族自治州',
 174         areaList: ['凯里市', '黄平县', '施秉县', '三穗县', '镇远县', '岑巩县', '天柱县', '锦屏县', '剑河县', '台江县', '黎平县', '榕江县', '从江县', '雷山县', '麻江县', '丹寨县']
 175     },
 176     {
 177         name: '黔南布依族苗族自治州',
 178         areaList: ['都匀市', '福泉市', '荔波县', '贵定县', '瓮安县', '独山县', '平塘县', '罗甸县', '长顺县', '龙里县', '惠水县', '三都水族自治县']
 179     }
 180     ]
 181 },
 182 {
 183     name: '云南',
 184     cityList: [{
 185         name: '昆明市',
 186         areaList: ['市辖区', '五华区', '盘龙区', '官渡区', '西山区', '东川区', '呈贡县', '晋宁县', '富民县', '宜良县', '石林彝族自治县', '嵩明县', '禄劝彝族苗族自治县', '寻甸回族彝族自治县', '安宁市']
 187     },
 188     {
 189         name: '曲靖市',
 190         areaList: ['市辖区', '麒麟区', '马龙县', '陆良县', '师宗县', '罗平县', '富源县', '会泽县', '沾益县', '宣威市']
 191     },
 192     {
 193         name: '玉溪市',
 194         areaList: ['市辖区', '红塔区', '江川县', '澄江县', '通海县', '华宁县', '易门县', '峨山彝族自治县', '新平彝族傣族自治县', '元江哈尼族彝族傣族自治县']
 195     },
 196     {
 197         name: '保山市',
 198         areaList: ['市辖区', '隆阳区', '施甸县', '腾冲县', '龙陵县', '昌宁县']
 199     },
 200     {
 201         name: '昭通市',
 202         areaList: ['市辖区', '昭阳区', '鲁甸县', '巧家县', '盐津县', '大关县', '永善县', '绥江县', '镇雄县', '彝良县', '威信县', '水富县']
 203     },
 204     {
 205         name: '丽江市',
 206         areaList: ['市辖区', '古城区', '玉龙纳西族自治县', '永胜县', '华坪县', '宁蒗彝族自治县']
 207     },
 208     {
 209         name: '思茅市',
 210         areaList: ['市辖区', '翠云区', '普洱哈尼族彝族自治县', '墨江哈尼族自治县', '景东彝族自治县', '景谷傣族彝族自治县', '镇沅彝族哈尼族拉祜族自治县', '江城哈尼族彝族自治县', '孟连傣族拉祜族佤族自治县', '澜沧拉祜族自治县', '西盟佤族自治县']
 211     },
 212     {
 213         name: '临沧市',
 214         areaList: ['市辖区', '临翔区', '凤庆县', '云 县', '永德县', '镇康县', '双江拉祜族佤族布朗族傣族自治县', '耿马傣族佤族自治县', '沧源佤族自治县']
 215     },
 216     {
 217         name: '楚雄彝族自治州',
 218         areaList: ['楚雄市', '双柏县', '牟定县', '南华县', '姚安县', '大姚县', '永仁县', '元谋县', '武定县', '禄丰县']
 219     },
 220     {
 221         name: '红河哈尼族彝族自治州',
 222         areaList: ['个旧市', '开远市', '蒙自县', '屏边苗族自治县', '建水县', '石屏县', '弥勒县', '泸西县', '元阳县', '红河县', '金平苗族瑶族傣族自治县', '绿春县', '河口瑶族自治县']
 223     },
 224     {
 225         name: '文山壮族苗族自治州',
 226         areaList: ['文山县', '砚山县', '西畴县', '麻栗坡县', '马关县', '丘北县', '广南县', '富宁县']
 227     },
 228     {
 229         name: '西双版纳傣族自治州',
 230         areaList: ['景洪市', '勐海县', '勐腊县']
 231     },
 232     {
 233         name: '大理白族自治州',
 234         areaList: ['大理市', '漾濞彝族自治县', '祥云县', '宾川县', '弥渡县', '南涧彝族自治县', '巍山彝族回族自治县', '永平县', '云龙县', '洱源县', '剑川县', '鹤庆县']
 235     },
 236     {
 237         name: '德宏傣族景颇族自治州',
 238         areaList: ['瑞丽市', '潞西市', '梁河县', '盈江县', '陇川县']
 239     },
 240     {
 241         name: '怒江傈僳族自治州',
 242         areaList: ['泸水县', '福贡县', '贡山独龙族怒族自治县', '兰坪白族普米族自治县']
 243     },
 244     {
 245         name: '迪庆藏族自治州',
 246         areaList: ['香格里拉县', '德钦县', '维西傈僳族自治县']
 247     }
 248     ]
 249 },
 250 {
 251     name: '西藏',
 252     cityList: [{
 253         name: '拉萨市',
 254         areaList: ['市辖区', '城关区', '林周县', '当雄县', '尼木县', '曲水县', '堆龙德庆县', '达孜县', '墨竹工卡县']
 255     },
 256     {
 257         name: '昌都地区',
 258         areaList: ['昌都县', '江达县', '贡觉县', '类乌齐县', '丁青县', '察雅县', '八宿县', '左贡县', '芒康县', '洛隆县', '边坝县']
 259     },
 260     {
 261         name: '山南地区',
 262         areaList: ['乃东县', '扎囊县', '贡嘎县', '桑日县', '琼结县', '曲松县', '措美县', '洛扎县', '加查县', '隆子县', '错那县', '浪卡子县']
 263     },
 264     {
 265         name: '日喀则地区',
 266         areaList: ['日喀则市', '南木林县', '江孜县', '定日县', '萨迦县', '拉孜县', '昂仁县', '谢通门县', '白朗县', '仁布县', '康马县', '定结县', '仲巴县', '亚东县', '吉隆县', '聂拉木县', '萨嘎县', '岗巴县']
 267     },
 268     {
 269         name: '那曲地区',
 270         areaList: ['那曲县', '嘉黎县', '比如县', '聂荣县', '安多县', '申扎县', '索 县', '班戈县', '巴青县', '尼玛县']
 271     },
 272     {
 273         name: '阿里地区',
 274         areaList: ['普兰县', '札达县', '噶尔县', '日土县', '革吉县', '改则县', '措勤县']
 275     },
 276     {
 277         name: '林芝地区',
 278         areaList: ['林芝县', '工布江达县', '米林县', '墨脱县', '波密县', '察隅县', '朗 县']
 279     }
 280     ]
 281 },
 282 {
 283     name: '河南',
 284     cityList: [{
 285         name: '郑州市',
 286         areaList: ['市辖区', '中原区', '二七区', '管城回族区', '金水区', '上街区', '邙山区', '中牟县', '巩义市', '荥阳市', '新密市', '新郑市', '登封市']
 287     },
 288     {
 289         name: '开封市',
 290         areaList: ['市辖区', '龙亭区', '顺河回族区', '鼓楼区', '南关区', '郊 区', '杞 县', '通许县', '尉氏县', '开封县', '兰考县']
 291     },
 292     {
 293         name: '洛阳市',
 294         areaList: ['市辖区', '老城区', '西工区', '廛河回族区', '涧西区', '吉利区', '洛龙区', '孟津县', '新安县', '栾川县', '嵩 县', '汝阳县', '宜阳县', '洛宁县', '伊川县', '偃师市']
 295     },
 296     {
 297         name: '平顶山市',
 298         areaList: ['市辖区', '新华区', '卫东区', '石龙区', '湛河区', '宝丰县', '叶 县', '鲁山县', '郏 县', '舞钢市', '汝州市']
 299     },
 300     {
 301         name: '安阳市',
 302         areaList: ['市辖区', '文峰区', '北关区', '殷都区', '龙安区', '安阳县', '汤阴县', '滑 县', '内黄县', '林州市']
 303     },
 304     {
 305         name: '鹤壁市',
 306         areaList: ['市辖区', '鹤山区', '山城区', '淇滨区', '浚 县', '淇 县']
 307     },
 308     {
 309         name: '新乡市',
 310         areaList: ['市辖区', '红旗区', '卫滨区', '凤泉区', '牧野区', '新乡县', '获嘉县', '原阳县', '延津县', '封丘县', '长垣县', '卫辉市', '辉县市']
 311     },
 312     {
 313         name: '焦作市',
 314         areaList: ['市辖区', '解放区', '中站区', '马村区', '山阳区', '修武县', '博爱县', '武陟县', '温 县', '济源市', '沁阳市', '孟州市']
 315     },
 316     {
 317         name: '濮阳市',
 318         areaList: ['市辖区', '华龙区', '清丰县', '南乐县', '范 县', '台前县', '濮阳县']
 319     },
 320     {
 321         name: '许昌市',
 322         areaList: ['市辖区', '魏都区', '许昌县', '鄢陵县', '襄城县', '禹州市', '长葛市']
 323     },
 324     {
 325         name: '漯河市',
 326         areaList: ['市辖区', '源汇区', '郾城区', '召陵区', '舞阳县', '临颍县']
 327     },
 328     {
 329         name: '三门峡市',
 330         areaList: ['市辖区', '湖滨区', '渑池县', '陕 县', '卢氏县', '义马市', '灵宝市']
 331     },
 332     {
 333         name: '南阳市',
 334         areaList: ['市辖区', '宛城区', '卧龙区', '南召县', '方城县', '西峡县', '镇平县', '内乡县', '淅川县', '社旗县', '唐河县', '新野县', '桐柏县', '邓州市']
 335     },
 336     {
 337         name: '商丘市',
 338         areaList: ['市辖区', '梁园区', '睢阳区', '民权县', '睢 县', '宁陵县', '柘城县', '虞城县', '夏邑县', '永城市']
 339     },
 340     {
 341         name: '信阳市',
 342         areaList: ['市辖区', '师河区', '平桥区', '罗山县', '光山县', '新 县', '商城县', '固始县', '潢川县', '淮滨县', '息 县']
 343     },
 344     {
 345         name: '周口市',
 346         areaList: ['市辖区', '川汇区', '扶沟县', '西华县', '商水县', '沈丘县', '郸城县', '淮阳县', '太康县', '鹿邑县', '项城市']
 347     },
 348     {
 349         name: '驻马店市',
 350         areaList: ['市辖区', '驿城区', '西平县', '上蔡县', '平舆县', '正阳县', '确山县', '泌阳县', '汝南县', '遂平县', '新蔡县']
 351     }
 352     ]
 353 },
 354 {
 355     name: '湖北',
 356     cityList: [{
 357         name: '武汉市',
 358         areaList: ['市辖区', '江岸区', '江汉区', '乔口区', '汉阳区', '武昌区', '青山区', '洪山区', '东西湖区', '汉南区', '蔡甸区', '江夏区', '黄陂区', '新洲区']
 359     },
 360     {
 361         name: '黄石市',
 362         areaList: ['市辖区', '黄石港区', '西塞山区', '下陆区', '铁山区', '阳新县', '大冶市']
 363     },
 364     {
 365         name: '十堰市',
 366         areaList: ['市辖区', '茅箭区', '张湾区', '郧 县', '郧西县', '竹山县', '竹溪县', '房 县', '丹江口市']
 367     },
 368     {
 369         name: '宜昌市',
 370         areaList: ['市辖区', '西陵区', '伍家岗区', '点军区', '猇亭区', '夷陵区', '远安县', '兴山县', '秭归县', '长阳土家族自治县', '五峰土家族自治县', '宜都市', '当阳市', '枝江市']
 371     },
 372     {
 373         name: '襄樊市',
 374         areaList: ['市辖区', '襄城区', '樊城区', '襄阳区', '南漳县', '谷城县', '保康县', '老河口市', '枣阳市', '宜城市']
 375     },
 376     {
 377         name: '鄂州市',
 378         areaList: ['市辖区', '梁子湖区', '华容区', '鄂城区']
 379     },
 380     {
 381         name: '荆门市',
 382         areaList: ['市辖区', '东宝区', '掇刀区', '京山县', '沙洋县', '钟祥市']
 383     },
 384     {
 385         name: '孝感市',
 386         areaList: ['市辖区', '孝南区', '孝昌县', '大悟县', '云梦县', '应城市', '安陆市', '汉川市']
 387     },
 388     {
 389         name: '荆州市',
 390         areaList: ['市辖区', '沙市区', '荆州区', '公安县', '监利县', '江陵县', '石首市', '洪湖市', '松滋市']
 391     },
 392     {
 393         name: '黄冈市',
 394         areaList: ['市辖区', '黄州区', '团风县', '红安县', '罗田县', '英山县', '浠水县', '蕲春县', '黄梅县', '麻城市', '武穴市']
 395     },
 396     {
 397         name: '咸宁市',
 398         areaList: ['市辖区', '咸安区', '嘉鱼县', '通城县', '崇阳县', '通山县', '赤壁市']
 399     },
 400     {
 401         name: '随州市',
 402         areaList: ['市辖区', '曾都区', '广水市']
 403     },
 404     {
 405         name: '恩施土家族苗族自治州',
 406         areaList: ['恩施市', '利川市', '建始县', '巴东县', '宣恩县', '咸丰县', '来凤县', '鹤峰县']
 407     },
 408     {
 409         name: '省直辖行政单位',
 410         areaList: ['仙桃市', '潜江市', '天门市', '神农架林区']
 411     }
 412     ]
 413 },
 414 {
 415     name: '湖南',
 416     cityList: [{
 417         name: '长沙市',
 418         areaList: ['市辖区', '芙蓉区', '天心区', '岳麓区', '开福区', '雨花区', '长沙县', '望城县', '宁乡县', '浏阳市']
 419     },
 420     {
 421         name: '株洲市',
 422         areaList: ['市辖区', '荷塘区', '芦淞区', '石峰区', '天元区', '株洲县', '攸 县', '茶陵县', '炎陵县', '醴陵市']
 423     },
 424     {
 425         name: '湘潭市',
 426         areaList: ['市辖区', '雨湖区', '岳塘区', '湘潭县', '湘乡市', '韶山市']
 427     },
 428     {
 429         name: '衡阳市',
 430         areaList: ['市辖区', '珠晖区', '雁峰区', '石鼓区', '蒸湘区', '南岳区', '衡阳县', '衡南县', '衡山县', '衡东县', '祁东县', '耒阳市', '常宁市']
 431     },
 432     {
 433         name: '邵阳市',
 434         areaList: ['市辖区', '双清区', '大祥区', '北塔区', '邵东县', '新邵县', '邵阳县', '隆回县', '洞口县', '绥宁县', '新宁县', '城步苗族自治县', '武冈市']
 435     },
 436     {
 437         name: '岳阳市',
 438         areaList: ['市辖区', '岳阳楼区', '云溪区', '君山区', '岳阳县', '华容县', '湘阴县', '平江县', '汨罗市', '临湘市']
 439     },
 440     {
 441         name: '常德市',
 442         areaList: ['市辖区', '武陵区', '鼎城区', '安乡县', '汉寿县', '澧 县', '临澧县', '桃源县', '石门县', '津市市']
 443     },
 444     {
 445         name: '张家界市',
 446         areaList: ['市辖区', '永定区', '武陵源区', '慈利县', '桑植县']
 447     },
 448     {
 449         name: '益阳市',
 450         areaList: ['市辖区', '资阳区', '赫山区', '南 县', '桃江县', '安化县', '沅江市']
 451     },
 452     {
 453         name: '郴州市',
 454         areaList: ['市辖区', '北湖区', '苏仙区', '桂阳县', '宜章县', '永兴县', '嘉禾县', '临武县', '汝城县', '桂东县', '安仁县', '资兴市']
 455     },
 456     {
 457         name: '永州市',
 458         areaList: ['市辖区', '芝山区', '冷水滩区', '祁阳县', '东安县', '双牌县', '道 县', '江永县', '宁远县', '蓝山县', '新田县', '江华瑶族自治县']
 459     },
 460     {
 461         name: '怀化市',
 462         areaList: ['市辖区', '鹤城区', '中方县', '沅陵县', '辰溪县', '溆浦县', '会同县', '麻阳苗族自治县', '新晃侗族自治县', '芷江侗族自治县', '靖州苗族侗族自治县', '通道侗族自治县', '洪江市']
 463     },
 464     {
 465         name: '娄底市',
 466         areaList: ['市辖区', '娄星区', '双峰县', '新化县', '冷水江市', '涟源市']
 467     },
 468     {
 469         name: '湘西土家族苗族自治州',
 470         areaList: ['吉首市', '泸溪县', '凤凰县', '花垣县', '保靖县', '古丈县', '永顺县', '龙山县']
 471     }
 472     ]
 473 },
 474 {
 475     name: '广东',
 476     cityList: [{
 477         name: '广州市',
 478         areaList: ['市辖区', '东山区', '荔湾区', '越秀区', '海珠区', '天河区', '芳村区', '白云区', '黄埔区', '番禺区', '花都区', '增城市', '从化市']
 479     },
 480     {
 481         name: '韶关市',
 482         areaList: ['市辖区', '武江区', '浈江区', '曲江区', '始兴县', '仁化县', '翁源县', '乳源瑶族自治县', '新丰县', '乐昌市', '南雄市']
 483     },
 484     {
 485         name: '深圳市',
 486         areaList: ['市辖区', '罗湖区', '福田区', '南山区', '宝安区', '龙岗区', '盐田区']
 487     },
 488     {
 489         name: '珠海市',
 490         areaList: ['市辖区', '香洲区', '斗门区', '金湾区']
 491     },
 492     {
 493         name: '汕头市',
 494         areaList: ['市辖区', '龙湖区', '金平区', '濠江区', '潮阳区', '潮南区', '澄海区', '南澳县']
 495     },
 496     {
 497         name: '佛山市',
 498         areaList: ['市辖区', '禅城区', '南海区', '顺德区', '三水区', '高明区']
 499     },
 500     {
 501         name: '江门市',
 502         areaList: ['市辖区', '蓬江区', '江海区', '新会区', '台山市', '开平市', '鹤山市', '恩平市']
 503     },
 504     {
 505         name: '湛江市',
 506         areaList: ['市辖区', '赤坎区', '霞山区', '坡头区', '麻章区', '遂溪县', '徐闻县', '廉江市', '雷州市', '吴川市']
 507     },
 508     {
 509         name: '茂名市',
 510         areaList: ['市辖区', '茂南区', '茂港区', '电白县', '高州市', '化州市', '信宜市']
 511     },
 512     {
 513         name: '肇庆市',
 514         areaList: ['市辖区', '端州区', '鼎湖区', '广宁县', '怀集县', '封开县', '德庆县', '高要市', '四会市']
 515     },
 516     {
 517         name: '惠州市',
 518         areaList: ['市辖区', '惠城区', '惠阳区', '博罗县', '惠东县', '龙门县']
 519     },
 520     {
 521         name: '梅州市',
 522         areaList: ['市辖区', '梅江区', '梅 县', '大埔县', '丰顺县', '五华县', '平远县', '蕉岭县', '兴宁市']
 523     },
 524     {
 525         name: '汕尾市',
 526         areaList: ['市辖区', '城 区', '海丰县', '陆河县', '陆丰市']
 527     },
 528     {
 529         name: '河源市',
 530         areaList: ['市辖区', '源城区', '紫金县', '龙川县', '连平县', '和平县', '东源县']
 531     },
 532     {
 533         name: '阳江市',
 534         areaList: ['市辖区', '江城区', '阳西县', '阳东县', '阳春市']
 535     },
 536     {
 537         name: '清远市',
 538         areaList: ['市辖区', '清城区', '佛冈县', '阳山县', '连山壮族瑶族自治县', '连南瑶族自治县', '清新县', '英德市', '连州市']
 539     },
 540     {
 541         name: '东莞市',
 542         areaList: ['东莞市']
 543     },
 544     {
 545         name: '中山市',
 546         areaList: ['中山市']
 547     },
 548     {
 549         name: '潮州市',
 550         areaList: ['市辖区', '湘桥区', '潮安县', '饶平县']
 551     },
 552     {
 553         name: '揭阳市',
 554         areaList: ['市辖区', '榕城区', '揭东县', '揭西县', '惠来县', '普宁市']
 555     },
 556     {
 557         name: '云浮市',
 558         areaList: ['市辖区', '云城区', '新兴县', '郁南县', '云安县', '罗定市']
 559     }
 560     ]
 561 },
 562 {
 563     name: '广西',
 564     cityList: [{
 565         name: '南宁市',
 566         areaList: ['市辖区', '兴宁区', '青秀区', '江南区', '西乡塘区', '良庆区', '邕宁区', '武鸣县', '隆安县', '马山县', '上林县', '宾阳县', '横 县']
 567     },
 568     {
 569         name: '柳州市',
 570         areaList: ['市辖区', '城中区', '鱼峰区', '柳南区', '柳北区', '柳江县', '柳城县', '鹿寨县', '融安县', '融水苗族自治县', '三江侗族自治县']
 571     },
 572     {
 573         name: '桂林市',
 574         areaList: ['市辖区', '秀峰区', '叠彩区', '象山区', '七星区', '雁山区', '阳朔县', '临桂县', '灵川县', '全州县', '兴安县', '永福县', '灌阳县', '龙胜各族自治县', '资源县', '平乐县', '荔蒲县', '恭城瑶族自治县']
 575     },
 576     {
 577         name: '梧州市',
 578         areaList: ['市辖区', '万秀区', '蝶山区', '长洲区', '苍梧县', '藤 县', '蒙山县', '岑溪市']
 579     },
 580     {
 581         name: '北海市',
 582         areaList: ['市辖区', '海城区', '银海区', '铁山港区', '合浦县']
 583     },
 584     {
 585         name: '防城港市',
 586         areaList: ['市辖区', '港口区', '防城区', '上思县', '东兴市']
 587     },
 588     {
 589         name: '钦州市',
 590         areaList: ['市辖区', '钦南区', '钦北区', '灵山县', '浦北县']
 591     },
 592     {
 593         name: '贵港市',
 594         areaList: ['市辖区', '港北区', '港南区', '覃塘区', '平南县', '桂平市']
 595     },
 596     {
 597         name: '玉林市',
 598         areaList: ['市辖区', '玉州区', '容 县', '陆川县', '博白县', '兴业县', '北流市']
 599     },
 600     {
 601         name: '百色市',
 602         areaList: ['市辖区', '右江区', '田阳县', '田东县', '平果县', '德保县', '靖西县', '那坡县', '凌云县', '乐业县', '田林县', '西林县', '隆林各族自治县']
 603     },
 604     {
 605         name: '贺州市',
 606         areaList: ['市辖区', '八步区', '昭平县', '钟山县', '富川瑶族自治县']
 607     },
 608     {
 609         name: '河池市',
 610         areaList: ['市辖区', '金城江区', '南丹县', '天峨县', '凤山县', '东兰县', '罗城仫佬族自治县', '环江毛南族自治县', '巴马瑶族自治县', '都安瑶族自治县', '大化瑶族自治县', '宜州市']
 611     },
 612     {
 613         name: '来宾市',
 614         areaList: ['市辖区', '兴宾区', '忻城县', '象州县', '武宣县', '金秀瑶族自治县', '合山市']
 615     },
 616     {
 617         name: '崇左市',
 618         areaList: ['市辖区', '江洲区', '扶绥县', '宁明县', '龙州县', '大新县', '天等县', '凭祥市']
 619     }
 620     ]
 621 },
 622 {
 623     name: '陕西',
 624     cityList: [{
 625         name: '西安市',
 626         areaList: ['市辖区', '新城区', '碑林区', '莲湖区', '灞桥区', '未央区', '雁塔区', '阎良区', '临潼区', '长安区', '蓝田县', '周至县', '户 县', '高陵县']
 627     },
 628     {
 629         name: '铜川市',
 630         areaList: ['市辖区', '王益区', '印台区', '耀州区', '宜君县']
 631     },
 632     {
 633         name: '宝鸡市',
 634         areaList: ['市辖区', '渭滨区', '金台区', '陈仓区', '凤翔县', '岐山县', '扶风县', '眉 县', '陇 县', '千阳县', '麟游县', '凤 县', '太白县']
 635     },
 636     {
 637         name: '咸阳市',
 638         areaList: ['市辖区', '秦都区', '杨凌区', '渭城区', '三原县', '泾阳县', '乾 县', '礼泉县', '永寿县', '彬 县', '长武县', '旬邑县', '淳化县', '武功县', '兴平市']
 639     },
 640     {
 641         name: '渭南市',
 642         areaList: ['市辖区', '临渭区', '华 县', '潼关县', '大荔县', '合阳县', '澄城县', '蒲城县', '白水县', '富平县', '韩城市', '华阴市']
 643     },
 644     {
 645         name: '延安市',
 646         areaList: ['市辖区', '宝塔区', '延长县', '延川县', '子长县', '安塞县', '志丹县', '吴旗县', '甘泉县', '富 县', '洛川县', '宜川县', '黄龙县', '黄陵县']
 647     },
 648     {
 649         name: '汉中市',
 650         areaList: ['市辖区', '汉台区', '南郑县', '城固县', '洋 县', '西乡县', '勉 县', '宁强县', '略阳县', '镇巴县', '留坝县', '佛坪县']
 651     },
 652     {
 653         name: '榆林市',
 654         areaList: ['市辖区', '榆阳区', '神木县', '府谷县', '横山县', '靖边县', '定边县', '绥德县', '米脂县', '佳 县', '吴堡县', '清涧县', '子洲县']
 655     },
 656     {
 657         name: '安康市',
 658         areaList: ['市辖区', '汉滨区', '汉阴县', '石泉县', '宁陕县', '紫阳县', '岚皋县', '平利县', '镇坪县', '旬阳县', '白河县']
 659     },
 660     {
 661         name: '商洛市',
 662         areaList: ['市辖区', '商州区', '洛南县', '丹凤县', '商南县', '山阳县', '镇安县', '柞水县']
 663     }
 664     ]
 665 },
 666 {
 667     name: '甘肃',
 668     cityList: [{
 669         name: '兰州市',
 670         areaList: ['市辖区', '城关区', '七里河区', '西固区', '安宁区', '红古区', '永登县', '皋兰县', '榆中县']
 671     },
 672     {
 673         name: '嘉峪关市',
 674         areaList: ['市辖区']
 675     },
 676     {
 677         name: '金昌市',
 678         areaList: ['市辖区', '金川区', '永昌县']
 679     },
 680     {
 681         name: '白银市',
 682         areaList: ['市辖区', '白银区', '平川区', '靖远县', '会宁县', '景泰县']
 683     },
 684     {
 685         name: '天水市',
 686         areaList: ['市辖区', '秦城区', '北道区', '清水县', '秦安县', '甘谷县', '武山县', '张家川回族自治县']
 687     },
 688     {
 689         name: '武威市',
 690         areaList: ['市辖区', '凉州区', '民勤县', '古浪县', '天祝藏族自治县']
 691     },
 692     {
 693         name: '张掖市',
 694         areaList: ['市辖区', '甘州区', '肃南裕固族自治县', '民乐县', '临泽县', '高台县', '山丹县']
 695     },
 696     {
 697         name: '平凉市',
 698         areaList: ['市辖区', '崆峒区', '泾川县', '灵台县', '崇信县', '华亭县', '庄浪县', '静宁县']
 699     },
 700     {
 701         name: '酒泉市',
 702         areaList: ['市辖区', '肃州区', '金塔县', '安西县', '肃北蒙古族自治县', '阿克塞哈萨克族自治县', '玉门市', '敦煌市']
 703     },
 704     {
 705         name: '庆阳市',
 706         areaList: ['市辖区', '西峰区', '庆城县', '环 县', '华池县', '合水县', '正宁县', '宁 县', '镇原县']
 707     },
 708     {
 709         name: '定西市',
 710         areaList: ['市辖区', '安定区', '通渭县', '陇西县', '渭源县', '临洮县', '漳 县', '岷 县']
 711     },
 712     {
 713         name: '陇南市',
 714         areaList: ['市辖区', '武都区', '成 县', '文 县', '宕昌县', '康 县', '西和县', '礼 县', '徽 县', '两当县']
 715     },
 716     {
 717         name: '临夏回族自治州',
 718         areaList: ['临夏市', '临夏县', '康乐县', '永靖县', '广河县', '和政县', '东乡族自治县', '积石山保安族东乡族撒拉族自治县']
 719     },
 720     {
 721         name: '甘南藏族自治州',
 722         areaList: ['合作市', '临潭县', '卓尼县', '舟曲县', '迭部县', '玛曲县', '碌曲县', '夏河县']
 723     }
 724     ]
 725 },
 726 {
 727     name: '青海',
 728     cityList: [{
 729         name: '西宁市',
 730         areaList: ['市辖区', '城东区', '城中区', '城西区', '城北区', '大通回族土族自治县', '湟中县', '湟源县']
 731     },
 732     {
 733         name: '海东地区',
 734         areaList: ['平安县', '民和回族土族自治县', '乐都县', '互助土族自治县', '化隆回族自治县', '循化撒拉族自治县']
 735     },
 736     {
 737         name: '海北藏族自治州',
 738         areaList: ['门源回族自治县', '祁连县', '海晏县', '刚察县']
 739     },
 740     {
 741         name: '黄南藏族自治州',
 742         areaList: ['同仁县', '尖扎县', '泽库县', '河南蒙古族自治县']
 743     },
 744     {
 745         name: '海南藏族自治州',
 746         areaList: ['共和县', '同德县', '贵德县', '兴海县', '贵南县']
 747     },
 748     {
 749         name: '果洛藏族自治州',
 750         areaList: ['玛沁县', '班玛县', '甘德县', '达日县', '久治县', '玛多县']
 751     },
 752     {
 753         name: '玉树藏族自治州',
 754         areaList: ['玉树县', '杂多县', '称多县', '治多县', '囊谦县', '曲麻莱县']
 755     },
 756     {
 757         name: '海西蒙古族藏族自治州',
 758         areaList: ['格尔木市', '德令哈市', '乌兰县', '都兰县', '天峻县']
 759     }
 760     ]
 761 },
 762 {
 763     name: '宁夏',
 764     cityList: [{
 765         name: '银川市',
 766         areaList: ['市辖区', '兴庆区', '西夏区', '金凤区', '永宁县', '贺兰县', '灵武市']
 767     },
 768     {
 769         name: '石嘴山市',
 770         areaList: ['市辖区', '大武口区', '惠农区', '平罗县']
 771     },
 772     {
 773         name: '吴忠市',
 774         areaList: ['市辖区', '利通区', '盐池县', '同心县', '青铜峡市']
 775     },
 776     {
 777         name: '固原市',
 778         areaList: ['市辖区', '原州区', '西吉县', '隆德县', '泾源县', '彭阳县', '海原县']
 779     },
 780     {
 781         name: '中卫市',
 782         areaList: ['市辖区', '沙坡头区', '中宁县']
 783     }
 784     ]
 785 },
 786 {
 787     name: '新疆',
 788     cityList: [{
 789         name: '乌鲁木齐市',
 790         areaList: ['市辖区', '天山区', '沙依巴克区', '新市区', '水磨沟区', '头屯河区', '达坂城区', '东山区', '乌鲁木齐县']
 791     },
 792     {
 793         name: '克拉玛依市',
 794         areaList: ['市辖区', '独山子区', '克拉玛依区', '白碱滩区', '乌尔禾区']
 795     },
 796     {
 797         name: '吐鲁番地区',
 798         areaList: ['吐鲁番市', '鄯善县', '托克逊县']
 799     },
 800     {
 801         name: '哈密地区',
 802         areaList: ['哈密市', '巴里坤哈萨克自治县', '伊吾县']
 803     },
 804     {
 805         name: '昌吉回族自治州',
 806         areaList: ['昌吉市', '阜康市', '米泉市', '呼图壁县', '玛纳斯县', '奇台县', '吉木萨尔县', '木垒哈萨克自治县']
 807     },
 808     {
 809         name: '博尔塔拉蒙古自治州',
 810         areaList: ['博乐市', '精河县', '温泉县']
 811     },
 812     {
 813         name: '巴音郭楞蒙古自治州',
 814         areaList: ['库尔勒市', '轮台县', '尉犁县', '若羌县', '且末县', '焉耆回族自治县', '和静县', '和硕县', '博湖县']
 815     },
 816     {
 817         name: '阿克苏地区',
 818         areaList: ['阿克苏市', '温宿县', '库车县', '沙雅县', '新和县', '拜城县', '乌什县', '阿瓦提县', '柯坪县']
 819     },
 820     {
 821         name: '克孜勒苏柯尔克孜自治州',
 822         areaList: ['阿图什市', '阿克陶县', '阿合奇县', '乌恰县']
 823     },
 824     {
 825         name: '喀什地区',
 826         areaList: ['喀什市', '疏附县', '疏勒县', '英吉沙县', '泽普县', '莎车县', '叶城县', '麦盖提县', '岳普湖县', '伽师县', '巴楚县', '塔什库尔干塔吉克自治县']
 827     },
 828     {
 829         name: '和田地区',
 830         areaList: ['和田市', '和田县', '墨玉县', '皮山县', '洛浦县', '策勒县', '于田县', '民丰县']
 831     },
 832     {
 833         name: '伊犁哈萨克自治州',
 834         areaList: ['伊宁市', '奎屯市', '伊宁县', '察布查尔锡伯自治县', '霍城县', '巩留县', '新源县', '昭苏县', '特克斯县', '尼勒克县']
 835     },
 836     {
 837         name: '塔城地区',
 838         areaList: ['塔城市', '乌苏市', '额敏县', '沙湾县', '托里县', '裕民县', '和布克赛尔蒙古自治县']
 839     },
 840     {
 841         name: '阿勒泰地区',
 842         areaList: ['阿勒泰市', '布尔津县', '富蕴县', '福海县', '哈巴河县', '青河县', '吉木乃县']
 843     },
 844     {
 845         name: '省直辖行政单位',
 846         areaList: ['石河子市', '阿拉尔市', '图木舒克市', '五家渠市']
 847     }
 848     ]
 849 },
 850 {
 851     name: '河北',
 852     cityList: [{
 853         name: '石家庄市',
 854         areaList: ['市辖区', '长安区', '桥东区', '桥西区', '新华区', '井陉矿区', '裕华区', '井陉县', '正定县', '栾城县', '行唐县', '灵寿县', '高邑县', '深泽县', '赞皇县', '无极县', '平山县', '元氏县', '赵 县', '辛集市', '藁城市', '晋州市', '新乐市', '鹿泉市']
 855     },
 856     {
 857         name: '唐山市',
 858         areaList: ['市辖区', '路南区', '路北区', '古冶区', '开平区', '丰南区', '丰润区', '滦 县', '滦南县', '乐亭县', '迁西县', '玉田县', '唐海县', '遵化市', '迁安市']
 859     },
 860     {
 861         name: '秦皇岛市',
 862         areaList: ['市辖区', '海港区', '山海关区', '北戴河区', '青龙满族自治县', '昌黎县', '抚宁县', '卢龙县']
 863     },
 864     {
 865         name: '邯郸市',
 866         areaList: ['市辖区', '邯山区', '丛台区', '复兴区', '峰峰矿区', '邯郸县', '临漳县', '成安县', '大名县', '涉 县', '磁 县', '肥乡县', '永年县', '邱 县', '鸡泽县', '广平县', '馆陶县', '魏 县', '曲周县', '武安市']
 867     },
 868     {
 869         name: '邢台市',
 870         areaList: ['市辖区', '桥东区', '桥西区', '邢台县', '临城县', '内丘县', '柏乡县', '隆尧县', '任 县', '南和县', '宁晋县', '巨鹿县', '新河县', '广宗县', '平乡县', '威 县', '清河县', '临西县', '南宫市', '沙河市']
 871     },
 872     {
 873         name: '保定市',
 874         areaList: ['市辖区', '新市区', '北市区', '南市区', '满城县', '清苑县', '涞水县', '阜平县', '徐水县', '定兴县', '唐 县', '高阳县', '容城县', '涞源县', '望都县', '安新县', '易 县', '曲阳县', '蠡 县', '顺平县', '博野县', '雄 县', '涿州市', '定州市', '安国市', '高碑店市']
 875     },
 876     {
 877         name: '张家口市',
 878         areaList: ['市辖区', '桥东区', '桥西区', '宣化区', '下花园区', '宣化县', '张北县', '康保县', '沽源县', '尚义县', '蔚 县', '阳原县', '怀安县', '万全县', '怀来县', '涿鹿县', '赤城县', '崇礼县']
 879     },
 880     {
 881         name: '承德市',
 882         areaList: ['市辖区', '双桥区', '双滦区', '鹰手营子矿区', '承德县', '兴隆县', '平泉县', '滦平县', '隆化县', '丰宁满族自治县', '宽城满族自治县', '围场满族蒙古族自治县']
 883     },
 884     {
 885         name: '沧州市',
 886         areaList: ['市辖区', '新华区', '运河区', '沧 县', '青 县', '东光县', '海兴县', '盐山县', '肃宁县', '南皮县', '吴桥县', '献 县', '孟村回族自治县', '泊头市', '任丘市', '黄骅市', '河间市']
 887     },
 888     {
 889         name: '廊坊市',
 890         areaList: ['市辖区', '安次区', '广阳区', '固安县', '永清县', '香河县', '大城县', '文安县', '大厂回族自治县', '霸州市', '三河市']
 891     },
 892     {
 893         name: '衡水市',
 894         areaList: ['市辖区', '桃城区', '枣强县', '武邑县', '武强县', '饶阳县', '安平县', '故城县', '景 县', '阜城县', '冀州市', '深州市']
 895     }
 896     ]
 897 },
 898 {
 899     name: '山西',
 900     cityList: [{
 901         name: '太原市',
 902         areaList: ['市辖区', '小店区', '迎泽区', '杏花岭区', '尖草坪区', '万柏林区', '晋源区', '清徐县', '阳曲县', '娄烦县', '古交市']
 903     },
 904     {
 905         name: '大同市',
 906         areaList: ['市辖区', '城 区', '矿 区', '南郊区', '新荣区', '阳高县', '天镇县', '广灵县', '灵丘县', '浑源县', '左云县', '大同县']
 907     },
 908     {
 909         name: '阳泉市',
 910         areaList: ['市辖区', '城 区', '矿 区', '郊 区', '平定县', '盂 县']
 911     },
 912     {
 913         name: '长治市',
 914         areaList: ['市辖区', '城 区', '郊 区', '长治县', '襄垣县', '屯留县', '平顺县', '黎城县', '壶关县', '长子县', '武乡县', '沁 县', '沁源县', '潞城市']
 915     },
 916     {
 917         name: '晋城市',
 918         areaList: ['市辖区', '城 区', '沁水县', '阳城县', '陵川县', '泽州县', '高平市']
 919     },
 920     {
 921         name: '朔州市',
 922         areaList: ['市辖区', '朔城区', '平鲁区', '山阴县', '应 县', '右玉县', '怀仁县']
 923     },
 924     {
 925         name: '晋中市',
 926         areaList: ['市辖区', '榆次区', '榆社县', '左权县', '和顺县', '昔阳县', '寿阳县', '太谷县', '祁 县', '平遥县', '灵石县', '介休市']
 927     },
 928     {
 929         name: '运城市',
 930         areaList: ['市辖区', '盐湖区', '临猗县', '万荣县', '闻喜县', '稷山县', '新绛县', '绛 县', '垣曲县', '夏 县', '平陆县', '芮城县', '永济市', '河津市']
 931     },
 932     {
 933         name: '忻州市',
 934         areaList: ['市辖区', '忻府区', '定襄县', '五台县', '代 县', '繁峙县', '宁武县', '静乐县', '神池县', '五寨县', '岢岚县', '河曲县', '保德县', '偏关县', '原平市']
 935     },
 936     {
 937         name: '临汾市',
 938         areaList: ['市辖区', '尧都区', '曲沃县', '翼城县', '襄汾县', '洪洞县', '古 县', '安泽县', '浮山县', '吉 县', '乡宁县', '大宁县', '隰 县', '永和县', '蒲 县', '汾西县', '侯马市', '霍州市']
 939     },
 940     {
 941         name: '吕梁市',
 942         areaList: ['市辖区', '离石区', '文水县', '交城县', '兴 县', '临 县', '柳林县', '石楼县', '岚 县', '方山县', '中阳县', '交口县', '孝义市', '汾阳市']
 943     }
 944     ]
 945 },
 946 {
 947     name: '内蒙古',
 948     cityList: [{
 949         name: '呼和浩特市',
 950         areaList: ['市辖区', '新城区', '回民区', '玉泉区', '赛罕区', '土默特左旗', '托克托县', '和林格尔县', '清水河县', '武川县']
 951     },
 952     {
 953         name: '包头市',
 954         areaList: ['市辖区', '东河区', '昆都仑区', '青山区', '石拐区', '白云矿区', '九原区', '土默特右旗', '固阳县', '达尔罕茂明安联合旗']
 955     },
 956     {
 957         name: '乌海市',
 958         areaList: ['市辖区', '海勃湾区', '海南区', '乌达区']
 959     },
 960     {
 961         name: '赤峰市',
 962         areaList: ['市辖区', '红山区', '元宝山区', '松山区', '阿鲁科尔沁旗', '巴林左旗', '巴林右旗', '林西县', '克什克腾旗', '翁牛特旗', '喀喇沁旗', '宁城县', '敖汉旗']
 963     },
 964     {
 965         name: '通辽市',
 966         areaList: ['市辖区', '科尔沁区', '科尔沁左翼中旗', '科尔沁左翼后旗', '开鲁县', '库伦旗', '奈曼旗', '扎鲁特旗', '霍林郭勒市']
 967     },
 968     {
 969         name: '鄂尔多斯市',
 970         areaList: ['东胜区', '达拉特旗', '准格尔旗', '鄂托克前旗', '鄂托克旗', '杭锦旗', '乌审旗', '伊金霍洛旗']
 971     },
 972     {
 973         name: '呼伦贝尔市',
 974         areaList: ['市辖区', '海拉尔区', '阿荣旗', '莫力达瓦达斡尔族自治旗', '鄂伦春自治旗', '鄂温克族自治旗', '陈巴尔虎旗', '新巴尔虎左旗', '新巴尔虎右旗', '满洲里市', '牙克石市', '扎兰屯市', '额尔古纳市', '根河市']
 975     },
 976     {
 977         name: '巴彦淖尔市',
 978         areaList: ['市辖区', '临河区', '五原县', '磴口县', '乌拉特前旗', '乌拉特中旗', '乌拉特后旗', '杭锦后旗']
 979     },
 980     {
 981         name: '乌兰察布市',
 982         areaList: ['市辖区', '集宁区', '卓资县', '化德县', '商都县', '兴和县', '凉城县', '察哈尔右翼前旗', '察哈尔右翼中旗', '察哈尔右翼后旗', '四子王旗', '丰镇市']
 983     },
 984     {
 985         name: '兴安盟',
 986         areaList: ['乌兰浩特市', '阿尔山市', '科尔沁右翼前旗', '科尔沁右翼中旗', '扎赉特旗', '突泉县']
 987     },
 988     {
 989         name: '锡林郭勒盟',
 990         areaList: ['二连浩特市', '锡林浩特市', '阿巴嘎旗', '苏尼特左旗', '苏尼特右旗', '东乌珠穆沁旗', '西乌珠穆沁旗', '太仆寺旗', '镶黄旗', '正镶白旗', '正蓝旗', '多伦县']
 991     },
 992     {
 993         name: '阿拉善盟',
 994         areaList: ['阿拉善左旗', '阿拉善右旗', '额济纳旗']
 995     }
 996     ]
 997 },
 998 {
 999     name: '江苏',
1000     cityList: [{
1001         name: '南京市',
1002         areaList: ['市辖区', '玄武区', '白下区', '秦淮区', '建邺区', '鼓楼区', '下关区', '浦口区', '栖霞区', '雨花台区', '江宁区', '六合区', '溧水县', '高淳县']
1003     },
1004     {
1005         name: '无锡市',
1006         areaList: ['市辖区', '崇安区', '南长区', '北塘区', '锡山区', '惠山区', '滨湖区', '江阴市', '宜兴市']
1007     },
1008     {
1009         name: '徐州市',
1010         areaList: ['市辖区', '鼓楼区', '云龙区', '九里区', '贾汪区', '泉山区', '丰 县', '沛 县', '铜山县', '睢宁县', '新沂市', '邳州市']
1011     },
1012     {
1013         name: '常州市',
1014         areaList: ['市辖区', '天宁区', '钟楼区', '戚墅堰区', '新北区', '武进区', '溧阳市', '金坛市']
1015     },
1016     {
1017         name: '苏州市',
1018         areaList: ['市辖区', '沧浪区', '平江区', '金阊区', '虎丘区', '吴中区', '相城区', '常熟市', '张家港市', '昆山市', '吴江市', '太仓市']
1019     },
1020     {
1021         name: '南通市',
1022         areaList: ['市辖区', '崇川区', '港闸区', '海安县', '如东县', '启东市', '如皋市', '通州市', '海门市']
1023     },
1024     {
1025         name: '连云港市',
1026         areaList: ['市辖区', '连云区', '新浦区', '海州区', '赣榆县', '东海县', '灌云县', '灌南县']
1027     },
1028     {
1029         name: '淮安市',
1030         areaList: ['市辖区', '清河区', '楚州区', '淮阴区', '清浦区', '涟水县', '洪泽县', '盱眙县', '金湖县']
1031     },
1032     {
1033         name: '盐城市',
1034         areaList: ['市辖区', '亭湖区', '盐都区', '响水县', '滨海县', '阜宁县', '射阳县', '建湖县', '东台市', '大丰市']
1035     },
1036     {
1037         name: '扬州市',
1038         areaList: ['市辖区', '广陵区', '邗江区', '郊 区', '宝应县', '仪征市', '高邮市', '江都市']
1039     },
1040     {
1041         name: '镇江市',
1042         areaList: ['市辖区', '京口区', '润州区', '丹徒区', '丹阳市', '扬中市', '句容市']
1043     },
1044     {
1045         name: '泰州市',
1046         areaList: ['市辖区', '海陵区', '高港区', '兴化市', '靖江市', '泰兴市', '姜堰市']
1047     },
1048     {
1049         name: '宿迁市',
1050         areaList: ['市辖区', '宿城区', '宿豫区', '沭阳县', '泗阳县', '泗洪县']
1051     }
1052     ]
1053 },
1054 {
1055     name: '浙江',
1056     cityList: [{
1057         name: '杭州市',
1058         areaList: ['市辖区', '上城区', '下城区', '江干区', '拱墅区', '西湖区', '滨江区', '萧山区', '余杭区', '桐庐县', '淳安县', '建德市', '富阳市', '临安市']
1059     },
1060     {
1061         name: '宁波市',
1062         areaList: ['市辖区', '海曙区', '江东区', '江北区', '北仑区', '镇海区', '鄞州区', '象山县', '宁海县', '余姚市', '慈溪市', '奉化市']
1063     },
1064     {
1065         name: '温州市',
1066         areaList: ['市辖区', '鹿城区', '龙湾区', '瓯海区', '洞头县', '永嘉县', '平阳县', '苍南县', '文成县', '泰顺县', '瑞安市', '乐清市']
1067     },
1068     {
1069         name: '嘉兴市',
1070         areaList: ['市辖区', '秀城区', '秀洲区', '嘉善县', '海盐县', '海宁市', '平湖市', '桐乡市']
1071     },
1072     {
1073         name: '湖州市',
1074         areaList: ['市辖区', '吴兴区', '南浔区', '德清县', '长兴县', '安吉县']
1075     },
1076     {
1077         name: '绍兴市',
1078         areaList: ['市辖区', '越城区', '绍兴县', '新昌县', '诸暨市', '上虞市', '嵊州市']
1079     },
1080     {
1081         name: '金华市',
1082         areaList: ['市辖区', '婺城区', '金东区', '武义县', '浦江县', '磐安县', '兰溪市', '义乌市', '东阳市', '永康市']
1083     },
1084     {
1085         name: '衢州市',
1086         areaList: ['市辖区', '柯城区', '衢江区', '常山县', '开化县', '龙游县', '江山市']
1087     },
1088     {
1089         name: '舟山市',
1090         areaList: ['市辖区', '定海区', '普陀区', '岱山县', '嵊泗县']
1091     },
1092     {
1093         name: '台州市',
1094         areaList: ['市辖区', '椒江区', '黄岩区', '路桥区', '玉环县', '三门县', '天台县', '仙居县', '温岭市', '临海市']
1095     },
1096     {
1097         name: '丽水市',
1098         areaList: ['市辖区', '莲都区', '青田县', '缙云县', '遂昌县', '松阳县', '云和县', '庆元县', '景宁畲族自治县', '龙泉市']
1099     }
1100     ]
1101 },
1102 {
1103     name: '安徽',
1104     cityList: [{
1105         name: '合肥市',
1106         areaList: ['市辖区', '瑶海区', '庐阳区', '蜀山区', '包河区', '长丰县', '肥东县', '肥西县']
1107     },
1108     {
1109         name: '芜湖市',
1110         areaList: ['市辖区', '镜湖区', '马塘区', '新芜区', '鸠江区', '芜湖县', '繁昌县', '南陵县']
1111     },
1112     {
1113         name: '蚌埠市',
1114         areaList: ['市辖区', '龙子湖区', '蚌山区', '禹会区', '淮上区', '怀远县', '五河县', '固镇县']
1115     },
1116     {
1117         name: '淮南市',
1118         areaList: ['市辖区', '大通区', '田家庵区', '谢家集区', '八公山区', '潘集区', '凤台县']
1119     },
1120     {
1121         name: '马鞍山市',
1122         areaList: ['市辖区', '金家庄区', '花山区', '雨山区', '当涂县']
1123     },
1124     {
1125         name: '淮北市',
1126         areaList: ['市辖区', '杜集区', '相山区', '烈山区', '濉溪县']
1127     },
1128     {
1129         name: '铜陵市',
1130         areaList: ['市辖区', '铜官山区', '狮子山区', '郊 区', '铜陵县']
1131     },
1132     {
1133         name: '安庆市',
1134         areaList: ['市辖区', '迎江区', '大观区', '郊 区', '怀宁县', '枞阳县', '潜山县', '太湖县', '宿松县', '望江县', '岳西县', '桐城市']
1135     },
1136     {
1137         name: '黄山市',
1138         areaList: ['市辖区', '屯溪区', '黄山区', '徽州区', '歙 县', '休宁县', '黟 县', '祁门县']
1139     },
1140     {
1141         name: '滁州市',
1142         areaList: ['市辖区', '琅琊区', '南谯区', '来安县', '全椒县', '定远县', '凤阳县', '天长市', '明光市']
1143     },
1144     {
1145         name: '阜阳市',
1146         areaList: ['市辖区', '颍州区', '颍东区', '颍泉区', '临泉县', '太和县', '阜南县', '颍上县', '界首市']
1147     },
1148     {
1149         name: '宿州市',
1150         areaList: ['市辖区', '墉桥区', '砀山县', '萧 县', '灵璧县', '泗 县']
1151     },
1152     {
1153         name: '巢湖市',
1154         areaList: ['市辖区', '居巢区', '庐江县', '无为县', '含山县', '和 县']
1155     },
1156     {
1157         name: '六安市',
1158         areaList: ['市辖区', '金安区', '裕安区', '寿 县', '霍邱县', '舒城县', '金寨县', '霍山县']
1159     },
1160     {
1161         name: '亳州市',
1162         areaList: ['市辖区', '谯城区', '涡阳县', '蒙城县', '利辛县']
1163     },
1164     {
1165         name: '池州市',
1166         areaList: ['市辖区', '贵池区', '东至县', '石台县', '青阳县']
1167     },
1168     {
1169         name: '宣城市',
1170         areaList: ['市辖区', '宣州区', '郎溪县', '广德县', '泾 县', '绩溪县', '旌德县', '宁国市']
1171     }
1172     ]
1173 },
1174 {
1175     name: '福建',
1176     cityList: [{
1177         name: '福州市',
1178         areaList: ['市辖区', '鼓楼区', '台江区', '仓山区', '马尾区', '晋安区', '闽侯县', '连江县', '罗源县', '闽清县', '永泰县', '平潭县', '福清市', '长乐市']
1179     },
1180     {
1181         name: '厦门市',
1182         areaList: ['市辖区', '思明区', '海沧区', '湖里区', '集美区', '同安区', '翔安区']
1183     },
1184     {
1185         name: '莆田市',
1186         areaList: ['市辖区', '城厢区', '涵江区', '荔城区', '秀屿区', '仙游县']
1187     },
1188     {
1189         name: '三明市',
1190         areaList: ['市辖区', '梅列区', '三元区', '明溪县', '清流县', '宁化县', '大田县', '尤溪县', '沙 县', '将乐县', '泰宁县', '建宁县', '永安市']
1191     },
1192     {
1193         name: '泉州市',
1194         areaList: ['市辖区', '鲤城区', '丰泽区', '洛江区', '泉港区', '惠安县', '安溪县', '永春县', '德化县', '金门县', '石狮市', '晋江市', '南安市']
1195     },
1196     {
1197         name: '漳州市',
1198         areaList: ['市辖区', '芗城区', '龙文区', '云霄县', '漳浦县', '诏安县', '长泰县', '东山县', '南靖县', '平和县', '华安县', '龙海市']
1199     },
1200     {
1201         name: '南平市',
1202         areaList: ['市辖区', '延平区', '顺昌县', '浦城县', '光泽县', '松溪县', '政和县', '邵武市', '武夷山市', '建瓯市', '建阳市']
1203     },
1204     {
1205         name: '龙岩市',
1206         areaList: ['市辖区', '新罗区', '长汀县', '永定县', '上杭县', '武平县', '连城县', '漳平市']
1207     },
1208     {
1209         name: '宁德市',
1210         areaList: ['市辖区', '蕉城区', '霞浦县', '古田县', '屏南县', '寿宁县', '周宁县', '柘荣县', '福安市', '福鼎市']
1211     }
1212     ]
1213 },
1214 {
1215     name: '江西',
1216     cityList: [{
1217         name: '南昌市',
1218         areaList: ['市辖区', '东湖区', '西湖区', '青云谱区', '湾里区', '青山湖区', '南昌县', '新建县', '安义县', '进贤县']
1219     },
1220     {
1221         name: '景德镇市',
1222         areaList: ['市辖区', '昌江区', '珠山区', '浮梁县', '乐平市']
1223     },
1224     {
1225         name: '萍乡市',
1226         areaList: ['市辖区', '安源区', '湘东区', '莲花县', '上栗县', '芦溪县']
1227     },
1228     {
1229         name: '九江市',
1230         areaList: ['市辖区', '庐山区', '浔阳区', '九江县', '武宁县', '修水县', '永修县', '德安县', '星子县', '都昌县', '湖口县', '彭泽县', '瑞昌市']
1231     },
1232     {
1233         name: '新余市',
1234         areaList: ['市辖区', '渝水区', '分宜县']
1235     },
1236     {
1237         name: '鹰潭市',
1238         areaList: ['市辖区', '月湖区', '余江县', '贵溪市']
1239     },
1240     {
1241         name: '赣州市',
1242         areaList: ['市辖区', '章贡区', '赣 县', '信丰县', '大余县', '上犹县', '崇义县', '安远县', '龙南县', '定南县', '全南县', '宁都县', '于都县', '兴国县', '会昌县', '寻乌县', '石城县', '瑞金市', '南康市']
1243     },
1244     {
1245         name: '吉安市',
1246         areaList: ['市辖区', '吉州区', '青原区', '吉安县', '吉水县', '峡江县', '新干县', '永丰县', '泰和县', '遂川县', '万安县', '安福县', '永新县', '井冈山市']
1247     },
1248     {
1249         name: '宜春市',
1250         areaList: ['市辖区', '袁州区', '奉新县', '万载县', '上高县', '宜丰县', '靖安县', '铜鼓县', '丰城市', '樟树市', '高安市']
1251     },
1252     {
1253         name: '抚州市',
1254         areaList: ['市辖区', '临川区', '南城县', '黎川县', '南丰县', '崇仁县', '乐安县', '宜黄县', '金溪县', '资溪县', '东乡县', '广昌县']
1255     },
1256     {
1257         name: '上饶市',
1258         areaList: ['市辖区', '信州区', '上饶县', '广丰县', '玉山县', '铅山县', '横峰县', '弋阳县', '余干县', '鄱阳县', '万年县', '婺源县', '德兴市']
1259     }
1260     ]
1261 },
1262 {
1263     name: '山东',
1264     cityList: [{
1265         name: '济南市',
1266         areaList: ['市辖区', '历下区', '市中区', '槐荫区', '天桥区', '历城区', '长清区', '平阴县', '济阳县', '商河县', '章丘市']
1267     },
1268     {
1269         name: '青岛市',
1270         areaList: ['市辖区', '市南区', '市北区', '四方区', '黄岛区', '崂山区', '李沧区', '城阳区', '胶州市', '即墨市', '平度市', '胶南市', '莱西市']
1271     },
1272     {
1273         name: '淄博市',
1274         areaList: ['市辖区', '淄川区', '张店区', '博山区', '临淄区', '周村区', '桓台县', '高青县', '沂源县']
1275     },
1276     {
1277         name: '枣庄市',
1278         areaList: ['市辖区', '市中区', '薛城区', '峄城区', '台儿庄区', '山亭区', '滕州市']
1279     },
1280     {
1281         name: '东营市',
1282         areaList: ['市辖区', '东营区', '河口区', '垦利县', '利津县', '广饶县']
1283     },
1284     {
1285         name: '烟台市',
1286         areaList: ['市辖区', '芝罘区', '福山区', '牟平区', '莱山区', '长岛县', '龙口市', '莱阳市', '莱州市', '蓬莱市', '招远市', '栖霞市', '海阳市']
1287     },
1288     {
1289         name: '潍坊市',
1290         areaList: ['市辖区', '潍城区', '寒亭区', '坊子区', '奎文区', '临朐县', '昌乐县', '青州市', '诸城市', '寿光市', '安丘市', '高密市', '昌邑市']
1291     },
1292     {
1293         name: '济宁市',
1294         areaList: ['市辖区', '市中区', '任城区', '微山县', '鱼台县', '金乡县', '嘉祥县', '汶上县', '泗水县', '梁山县', '曲阜市', '兖州市', '邹城市']
1295     },
1296     {
1297         name: '泰安市',
1298         areaList: ['市辖区', '泰山区', '岱岳区', '宁阳县', '东平县', '新泰市', '肥城市']
1299     },
1300     {
1301         name: '威海市',
1302         areaList: ['市辖区', '环翠区', '文登市', '荣成市', '乳山市']
1303     },
1304     {
1305         name: '日照市',
1306         areaList: ['市辖区', '东港区', '岚山区', '五莲县', '莒 县']
1307     },
1308     {
1309         name: '莱芜市',
1310         areaList: ['市辖区', '莱城区', '钢城区']
1311     },
1312     {
1313         name: '临沂市',
1314         areaList: ['市辖区', '兰山区', '罗庄区', '河东区', '沂南县', '郯城县', '沂水县', '苍山县', '费 县', '平邑县', '莒南县', '蒙阴县', '临沭县']
1315     },
1316     {
1317         name: '德州市',
1318         areaList: ['市辖区', '德城区', '陵 县', '宁津县', '庆云县', '临邑县', '齐河县', '平原县', '夏津县', '武城县', '乐陵市', '禹城市']
1319     },
1320     {
1321         name: '聊城市',
1322         areaList: ['市辖区', '东昌府区', '阳谷县', '莘 县', '茌平县', '东阿县', '冠 县', '高唐县', '临清市']
1323     },
1324     {
1325         name: '滨州市',
1326         areaList: ['市辖区', '滨城区', '惠民县', '阳信县', '无棣县', '沾化县', '博兴县', '邹平县']
1327     },
1328     {
1329         name: '荷泽市',
1330         areaList: ['市辖区', '牡丹区', '曹 县', '单 县', '成武县', '巨野县', '郓城县', '鄄城县', '定陶县', '东明县']
1331     }
1332     ]
1333 },
1334 {
1335     name: '辽宁',
1336     cityList: [{
1337         name: '沈阳市',
1338         areaList: ['市辖区', '和平区', '沈河区', '大东区', '皇姑区', '铁西区', '苏家屯区', '东陵区', '新城子区', '于洪区', '辽中县', '康平县', '法库县', '新民市']
1339     },
1340     {
1341         name: '大连市',
1342         areaList: ['市辖区', '中山区', '西岗区', '沙河口区', '甘井子区', '旅顺口区', '金州区', '长海县', '瓦房店市', '普兰店市', '庄河市']
1343     },
1344     {
1345         name: '鞍山市',
1346         areaList: ['市辖区', '铁东区', '铁西区', '立山区', '千山区', '台安县', '岫岩满族自治县', '海城市']
1347     },
1348     {
1349         name: '抚顺市',
1350         areaList: ['市辖区', '新抚区', '东洲区', '望花区', '顺城区', '抚顺县', '新宾满族自治县', '清原满族自治县']
1351     },
1352     {
1353         name: '本溪市',
1354         areaList: ['市辖区', '平山区', '溪湖区', '明山区', '南芬区', '本溪满族自治县', '桓仁满族自治县']
1355     },
1356     {
1357         name: '丹东市',
1358         areaList: ['市辖区', '元宝区', '振兴区', '振安区', '宽甸满族自治县', '东港市', '凤城市']
1359     },
1360     {
1361         name: '锦州市',
1362         areaList: ['市辖区', '古塔区', '凌河区', '太和区', '黑山县', '义 县', '凌海市', '北宁市']
1363     },
1364     {
1365         name: '营口市',
1366         areaList: ['市辖区', '站前区', '西市区', '鲅鱼圈区', '老边区', '盖州市', '大石桥市']
1367     },
1368     {
1369         name: '阜新市',
1370         areaList: ['市辖区', '海州区', '新邱区', '太平区', '清河门区', '细河区', '阜新蒙古族自治县', '彰武县']
1371     },
1372     {
1373         name: '辽阳市',
1374         areaList: ['市辖区', '白塔区', '文圣区', '宏伟区', '弓长岭区', '太子河区', '辽阳县', '灯塔市']
1375     },
1376     {
1377         name: '盘锦市',
1378         areaList: ['市辖区', '双台子区', '兴隆台区', '大洼县', '盘山县']
1379     },
1380     {
1381         name: '铁岭市',
1382         areaList: ['市辖区', '银州区', '清河区', '铁岭县', '西丰县', '昌图县', '调兵山市', '开原市']
1383     },
1384     {
1385         name: '朝阳市',
1386         areaList: ['市辖区', '双塔区', '龙城区', '朝阳县', '建平县', '喀喇沁左翼蒙古族自治县', '北票市', '凌源市']
1387     },
1388     {
1389         name: '葫芦岛市',
1390         areaList: ['市辖区', '连山区', '龙港区', '南票区', '绥中县', '建昌县', '兴城市']
1391     }
1392     ]
1393 },
1394 {
1395     name: '吉林',
1396     cityList: [{
1397         name: '长春市',
1398         areaList: ['市辖区', '南关区', '宽城区', '朝阳区', '二道区', '绿园区', '双阳区', '农安县', '九台市', '榆树市', '德惠市']
1399     },
1400     {
1401         name: '吉林市',
1402         areaList: ['市辖区', '昌邑区', '龙潭区', '船营区', '丰满区', '永吉县', '蛟河市', '桦甸市', '舒兰市', '磐石市']
1403     },
1404     {
1405         name: '四平市',
1406         areaList: ['市辖区', '铁西区', '铁东区', '梨树县', '伊通满族自治县', '公主岭市', '双辽市']
1407     },
1408     {
1409         name: '辽源市',
1410         areaList: ['市辖区', '龙山区', '西安区', '东丰县', '东辽县']
1411     },
1412     {
1413         name: '通化市',
1414         areaList: ['市辖区', '东昌区', '二道江区', '通化县', '辉南县', '柳河县', '梅河口市', '集安市']
1415     },
1416     {
1417         name: '白山市',
1418         areaList: ['市辖区', '八道江区', '抚松县', '靖宇县', '长白朝鲜族自治县', '江源县', '临江市']
1419     },
1420     {
1421         name: '松原市',
1422         areaList: ['市辖区', '宁江区', '前郭尔罗斯蒙古族自治县', '长岭县', '乾安县', '扶余县']
1423     },
1424     {
1425         name: '白城市',
1426         areaList: ['市辖区', '洮北区', '镇赉县', '通榆县', '洮南市', '大安市']
1427     },
1428     {
1429         name: '延边朝鲜族自治州',
1430         areaList: ['延吉市', '图们市', '敦化市', '珲春市', '龙井市', '和龙市', '汪清县', '安图县']
1431     }
1432     ]
1433 },
1434 {
1435     name: '黑龙江',
1436     cityList: [{
1437         name: '哈尔滨市',
1438         areaList: ['市辖区', '道里区', '南岗区', '道外区', '香坊区', '动力区', '平房区', '松北区', '呼兰区', '依兰县', '方正县', '宾 县', '巴彦县', '木兰县', '通河县', '延寿县', '阿城市', '双城市', '尚志市', '五常市']
1439     },
1440     {
1441         name: '齐齐哈尔市',
1442         areaList: ['市辖区', '龙沙区', '建华区', '铁锋区', '昂昂溪区', '富拉尔基区', '碾子山区', '梅里斯达斡尔族区', '龙江县', '依安县', '泰来县', '甘南县', '富裕县', '克山县', '克东县', '拜泉县', '讷河市']
1443     },
1444     {
1445         name: '鸡西市',
1446         areaList: ['市辖区', '鸡冠区', '恒山区', '滴道区', '梨树区', '城子河区', '麻山区', '鸡东县', '虎林市', '密山市']
1447     },
1448     {
1449         name: '鹤岗市',
1450         areaList: ['市辖区', '向阳区', '工农区', '南山区', '兴安区', '东山区', '兴山区', '萝北县', '绥滨县']
1451     },
1452     {
1453         name: '双鸭山市',
1454         areaList: ['市辖区', '尖山区', '岭东区', '四方台区', '宝山区', '集贤县', '友谊县', '宝清县', '饶河县']
1455     },
1456     {
1457         name: '大庆市',
1458         areaList: ['市辖区', '萨尔图区', '龙凤区', '让胡路区', '红岗区', '大同区', '肇州县', '肇源县', '林甸县', '杜尔伯特蒙古族自治县']
1459     },
1460     {
1461         name: '伊春市',
1462         areaList: ['市辖区', '伊春区', '南岔区', '友好区', '西林区', '翠峦区', '新青区', '美溪区', '金山屯区', '五营区', '乌马河区', '汤旺河区', '带岭区', '乌伊岭区', '红星区', '上甘岭区', '嘉荫县', '铁力市']
1463     },
1464     {
1465         name: '佳木斯市',
1466         areaList: ['市辖区', '永红区', '向阳区', '前进区', '东风区', '郊 区', '桦南县', '桦川县', '汤原县', '抚远县', '同江市', '富锦市']
1467     },
1468     {
1469         name: '七台河市',
1470         areaList: ['市辖区', '新兴区', '桃山区', '茄子河区', '勃利县']
1471     },
1472     {
1473         name: '牡丹江市',
1474         areaList: ['市辖区', '东安区', '阳明区', '爱民区', '西安区', '东宁县', '林口县', '绥芬河市', '海林市', '宁安市', '穆棱市']
1475     },
1476     {
1477         name: '黑河市',
1478         areaList: ['市辖区', '爱辉区', '嫩江县', '逊克县', '孙吴县', '北安市', '五大连池市']
1479     },
1480     {
1481         name: '绥化市',
1482         areaList: ['市辖区', '北林区', '望奎县', '兰西县', '青冈县', '庆安县', '明水县', '绥棱县', '安达市', '肇东市', '海伦市']
1483     },
1484     {
1485         name: '大兴安岭地区',
1486         areaList: ['呼玛县', '塔河县', '漠河县']
1487     }
1488     ]
1489 },
1490 {
1491     name: '海南',
1492     cityList: [{
1493         name: '海口市',
1494         areaList: ['市辖区', '秀英区', '龙华区', '琼山区', '美兰区']
1495     },
1496     {
1497         name: '三亚市',
1498         areaList: ['市辖区']
1499     },
1500     {
1501         name: '省直辖县级行政单位',
1502         areaList: ['五指山市', '琼海市', '儋州市', '文昌市', '万宁市', '东方市', '定安县', '屯昌县', '澄迈县', '临高县', '白沙黎族自治县', '昌江黎族自治县', '乐东黎族自治县', '陵水黎族自治县', '保亭黎族苗族自治县', '琼中黎族苗族自治县', '西沙群岛', '南沙群岛', '中沙群岛的岛礁及其海域']
1503     }
1504     ]
1505 },
1506 {
1507     name: '台湾',
1508     cityList: []
1509 },
1510 {
1511     name: '香港',
1512     cityList: []
1513 },
1514 {
1515     name: '澳门',
1516     cityList: []
1517 }
1518 ];
data.js
 1 /**
 2  * 根据选择器sel获取一个dom元素对象
 3  * @param {String} sel 选择器
 4  * @param {Object} ele dom元素对象
 5  * @returns {Object} 查找到的dom元素对象
 6  */
 7 function get (sel,ele= document) {
 8     return  ele.querySelector(sel);
 9 }
10 
11 /**
12  * 根据选择器sel获取多个dom元素对象
13  * @param {String} sel 选择器
14  * @param {Object} ele dom元素对象
15  * @returns {Array} 查找到的多个dom元素对象
16  */
17 function gets (sel,ele= document) {
18     return  ele.querySelectorAll(sel);
19 }
dom.js
  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>Document</title>
  9     <style>
 10         * {
 11             padding: 0;
 12             margin: 0;
 13         }
 14 
 15         .wrap {
 16             width: 1000px;
 17             margin: 100px auto;
 18             text-align: center;
 19         }
 20         select {
 21             width: 200px;
 22             height: 36px;
 23             font-size: 24px;
 24             outline: none;
 25         }
 26     </style>
 27 </head>
 28 
 29 <body>
 30 
 31     <div class="father">
 32         父亲
 33         <div class="son">儿子</div>
 34     </div>
 35 
 36 
 37     <div class="wrap">
 38         <select id="province">
 39             <!-- <option>--请选择--</option> -->
 40         </select>
 41         <select id="city">
 42             <option>--请选择--</option>
 43         </select>
 44         <select id="area">
 45             <option>--请选择--</option>
 46         </select>
 47     </div>
 48     <script src="./js/dom.js"></script>
 49     <script src="./js/data.js"></script>
 50 
 51     <script>
 52 
 53          // 1. 获取省市区
 54          //
 55          let province = get('#province');
 56          //
 57          let city = get('#city');
 58          //
 59          let area = get('#area');
 60 
 61 
 62          // 给省绑定click事件
 63          province.addEventListener('click', function () {
 64             //  console.log('province.selectedIndex',province.selectedIndex );
 65              // 省份下标
 66              let pIndex = province.selectedIndex -1;
 67              // 重置区县
 68              area.selectedIndex = 0;
 69 
 70              // 渲染市
 71             render(city, data[pIndex].cityList);
 72          });
 73 
 74          // 给市city绑定click事件
 75          city.addEventListener('click', function () {
 76              // 省下标
 77              let pIndex = province.selectedIndex -1;
 78              // 市下标
 79              let cIndex = city.selectedIndex -1;
 80              // 区县的数据
 81              let list = data[pIndex].cityList[cIndex].areaList;
 82              // 渲染区县
 83              render(area, list);
 84          });
 85 
 86 
 87 
 88          // 渲染省    
 89         render(province, data);
 90 
 91 
 92          // 渲染
 93          function render (ele, data) {
 94             ele.innerHTML ='<option>--请选择--</option>'+ data.map(function (item) {
 95                  return `<option>${item.name || item}</option>`;
 96             });
 97          }
 98 
 99       
100          
101          
102 
103 
104 
105     </script>
106 </body>
107 
108 </html>
index.html 

思路:

  • 渲染的重复使用,使用innerhtml加数组map进行渲染,结尾加join
  • item.name || item 的逻辑选择

知识点:

  • selectedIndex复选框内选项的下标
  • 开发中的注释      
1 /**
2 * 根据选择器sel获取一个dom元素对象
3 * @param {String} sel 选择器
4 * @param {Object} ele dom元素对象
5 * @returns {Object} 查找到的dom元素对象
6 */
  •  函数封装 实参和形参的位置
1 function gets (sel,ele= document) {
2     return  ele.querySelectorAll(sel);
3 }

楼层

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5    <meta charset="UTF-8">
  6    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7    <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8    <title>Document</title>
  9    <style>
 10       * {
 11          padding: 0;
 12          margin: 0;
 13          list-style: none;
 14       }
 15 
 16       ul {
 17          position: fixed;
 18          top: 50%;
 19          right: 10px;
 20          width: 80px;
 21       }
 22 
 23       ul li {
 24          background-color: green;
 25          margin-bottom: 10px;
 26          width: 100%;
 27          height: 36px;
 28          line-height: 36px;
 29          text-align: center;
 30          color: #ddd;
 31       }
 32 
 33       .content {
 34          margin: 0 auto;
 35          width: 1000px;
 36          font-size: 500px;
 37          color: #fff;
 38       }
 39 
 40       .content .box {
 41          height: 1000px;
 42          line-height: 1000px;
 43          text-align: center;
 44       }
 45 
 46       ul li.active {
 47          background-color: purple;
 48       }
 49    </style>
 50 </head>
 51 
 52 <body>
 53    <!-- 右楼层 -->
 54    <div class="warp">
 55       <ul>
 56          <!-- <li>1</li>
 57            <li>2</li>
 58            <li>3</li>
 59            <li>4</li>
 60            <li>5</li> -->
 61       </ul>
 62 
 63       <div class="content">
 64          <!-- <div class="box">1</div>
 65               <div class="box">2</div>
 66               <div class="box">3</div>
 67               <div class="box">4</div>
 68               <div class="box">5</div> -->
 69       </div>
 70 
 71 
 72    </div>
 73 
 74 </body>
 75 <script>
 76    let ul = document.querySelector('ul');
 77    let content = document.querySelector('.content');
 78    // 定义排序
 79    let data = [1, 2, 3, 4, 5];
 80    let index = 0;
 81    let pageY = 0;
 82    // 提前渲染
 83    renderFloor();
 84    renderContent();
 85    // 主楼层滚动
 86    window.addEventListener('scroll', function () {
 87       pageY = window.pageYOffset;
 88       index = Math.floor(pageY / content.children[0].offsetHeight);
 89       renderFloor();
 90    })
 91    // 副楼层点击
 92    ul.addEventListener('click', function (e = e || window.event) {
 93       if (e.target.nodeName == 'LI') {
 94          let index = +e.target.innerHTML;
 95          window.scrollTo(0, (index - 1) * content.children[0].offsetHeight);
 96       }
 97       renderFloor()
 98    })
 99    // 渲染副楼层
100    function renderFloor() {
101       ul.innerHTML = data.map(function (item, i) {
102          return `<li class = ${index == i ? 'active' : ''}> ${item}</li>`;
103       }).join('');
104    }
105    // 渲染主楼层
106    function renderContent() {
107       content.innerHTML = data.map(function (item, index) {
108          return `<div class = "box" style = "background-color:rgb(${getRandom(0, 255)},${getRandom(0, 255)},${getRandom(0, 255)})">${item}</div>`;
109       }).join('');
110    }
111    // 封装随机数
112    function getRandom(min, max) {
113       return Math.floor(Math.random() * (max - min + 1) + min);
114    }
115 </script>
116 
117 
118 </html>
楼层.html

思路:

  • 代码思路编写中,要重视整体框架的构思,一个好的框架既能节约时间,又清爽。注意开发规范才能提高水平。
  • 滚动,点击均重新渲染。渲染的模块!
  • 定义“位置函数”
  • 数学函数的使用(取整)

知识点:

  • 行内式<style="background-color:rgb();">
  • +e.target.innerHTML 字符串隐式转换为数字类型
  • window的scroll事件
  • window.scrollTo((x距离页面坐标,y页面坐标);

本地存储

sessionStorage

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <title>Document</title>
 7 </head>
 8 <body>
 9       <input type="text" placeholder="请输入内容">
10       <button>set 存储数据</button>
11       <button>get 获取数据</button>
12       <button>remove 删除数据</button>
13       <button>clear 清空数据</button>
14       <button>调转新页面</button>
15 
16       <script>
17           // 1. 获取所有button
18           let btns = document.querySelectorAll('button');
19           let ipt = document.querySelector('input');
20       
21           // 存数据
22           btns[0].addEventListener('click', function () {
23                 // 设置数据(用户输入)      
24                 let obj = [{name:'张三'},{name:'李四'}];
25                 // 字符串序列化 对象类型
26                 obj = JSON.stringify(obj);
27                 sessionStorage.setItem('u_name', obj);
28             //     sessionStorage.setItem('u_age', 20);
29           });
30 
31           // 获取数据
32           btns[1].addEventListener('click', function () {
33                 console.log(sessionStorage.getItem('u_name'));
34           });
35           // 删除数据
36           btns[2].addEventListener('click', function () {
37                sessionStorage.removeItem('u_name');
38           });
39 
40           // 清空数据
41           btns[3].addEventListener('click', function () {
42                sessionStorage.clear();
43           });
44 
45           btns[4].addEventListener('click', function () {
46                 location.href = 'http://127.0.0.1:5500/index.html';
47           });
48 
49       </script>
50 </body>
51 </html>
sessionStorage.html

知识点:

  • 字符串序列化
1 // 设置数据(用户输入)      
2                 let obj = [{name:'张三'},{name:'李四'}];
3                 // 字符串序列化 对象类型
4                 obj = JSON.stringify(obj);
5                 sessionStorage.setItem('u_name', obj);
  • location.href = 'http://127.0.0.1:5500/index.html';跳转页面

localStorage

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <title>Document</title>
 7 </head>
 8 <body>
 9       <input type="text" placeholder="请输入内容">
10       <button>set 存储数据</button>
11       <button>get 获取数据</button>
12       <button>remove 删除数据</button>
13       <button>clear 清空数据</button>
14       <button>调转新页面</button>
15 
16       <script>
17           // 1. 获取所有button
18           let btns = document.querySelectorAll('button');
19           let ipt = document.querySelector('input');
20         
21           // 存数据
22           btns[0].addEventListener('click', function () {
23                 // 设置数据(用户输入)      
24                 let obj = [{name:'张三'},{name:'李四'}];
25                 // 设置数据(用户输入)      
26                 localStorage.setItem('u_name', JSON.stringify(obj));
27                 localStorage.setItem('u_age', 20);
28           });
29 
30           // 获取数据
31           btns[1].addEventListener('click', function () {
32                 console.log(localStorage.getItem('u_name'));
33           });
34           // 删除数据
35           btns[2].addEventListener('click', function () {
36             localStorage.removeItem('u_name');
37           });
38 
39           // 清空数据
40           btns[3].addEventListener('click', function () {
41             localStorage.clear();
42           });
43 
44           btns[4].addEventListener('click', function () {
45                 location.href = 'http://127.0.0.1:5500/index.html';
46           });
47 
48       </script>
49 </body>
50 </html>
localstorage

知识点:

  • 原理同上

JSON序列化

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <title>Document</title>
 7 </head>
 8 <body>
 9       <h1>首页</h1>
10 
11       <script>
12 
13         // console.log(sessionStorage.getItem('u_name'));
14         // console.log(localStorage.getItem('u_name'));
15 
16         let obj = sessionStorage.getItem('u_name');
17         // JSON序列化
18         console.log(JSON.parse(obj));
19 
20 
21       </script>
22 </body>
23 </html>
JSON序列化.html 

DOM/BOM 期末考试(必考题) 

产品切换案例

购物栏

思路:利用data-index进行记序

  1 <!DOCTYPE html>
  2 <html>
  3 
  4 <head lang="en">
  5   <meta charset="UTF-8">
  6   <title></title>
  7   <style type="text/css">
  8     * {
  9       margin: 0;
 10       padding: 0;
 11     }
 12 
 13     ul {
 14       list-style: none;
 15     }
 16 
 17     .wrapper {
 18       width: 1000px;
 19       height: 475px;
 20       margin: 0 auto;
 21       margin-top: 100px;
 22     }
 23 
 24     .tab {
 25       border: 1px solid #ddd;
 26       border-bottom: 0;
 27       height: 36px;
 28       width: 320px;
 29     }
 30 
 31     .tab li {
 32       position: relative;
 33       float: left;
 34       width: 80px;
 35       height: 34px;
 36       line-height: 34px;
 37       text-align: center;
 38       cursor: pointer;
 39       border-top: 4px solid #fff;
 40     }
 41 
 42     .tab span {
 43       position: absolute;
 44       right: 0;
 45       top: 10px;
 46       background: #ddd;
 47       width: 1px;
 48       height: 14px;
 49       overflow: hidden;
 50     }
 51 
 52     .products {
 53       width: 1002px;
 54       border: 1px solid #ddd;
 55       height: 476px;
 56     }
 57 
 58     .products .main {
 59       float: left;
 60       display: none;
 61     }
 62 
 63     .products .main.selected {
 64       display: block;
 65     }
 66 
 67     .tab li.active {
 68       border-color: red;
 69       border-bottom: 0;
 70     }
 71   </style>
 72 
 73 
 74 
 75 </head>
 76 
 77 <body>
 78   <div class="wrapper">
 79     <ul class="tab">
 80       <li data-index = '0' class="tab-item active">国际大牌<span></span></li>
 81       <li data-index = '1' class="tab-item">国妆名牌<span></span></li>
 82       <li data-index = '2' class="tab-item">清洁用品<span></span></li>
 83       <li data-index = '3' class="tab-item">男士精品</li>
 84     </ul>
 85     <div class="products">
 86       <div class="main selected">
 87         <a href="###"><img src="imgs/guojidapai.jpg" alt="" /></a>
 88       </div>
 89       <div class="main">
 90         <a href="###"><img src="imgs/guozhuangmingpin.jpg" alt="" /></a>
 91       </div>
 92       <div class="main">
 93         <a href="###"><img src="imgs/qingjieyongpin.jpg" alt="" /></a>
 94       </div>
 95       <div class="main">
 96         <a href="###"><img src="imgs/nanshijingpin.jpg" alt="" /></a>
 97       </div>
 98     </div>
 99   </div>
100   <script>
101     // 获取tab
102     let tab = document.querySelector('.tab');
103     // 获取所有内容main
104     let mains = document.querySelectorAll('.main');
105     // 默认高亮下标
106     let index = 0;
107 
108     // 给table添加mouseover事件
109     tab.addEventListener('mouseover', function (e = e || window.event) {
110         // 是否是li
111         if (e.target.nodeName == 'LI') {
112            // 清除高亮
113            tab.children[index].classList.remove('active');
114            // 给当前元素添加高亮
115            e.target.classList.add('active');
116            // 隐藏上一个内容
117            mains[index].classList.remove('selected');
118            // 获取当前元素下标
119            index = +e.target.getAttribute('data-index');
120            // 显示对应的内容
121            mains[index].classList.add('selected');
122 
123         }
124     });
125 
126   </script>
127 </body>
128 
129 </html>
tab栏案例

游戏装备栏

 知识点:设置自定义属性setattribute('属性名','属性值')

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5   <meta charset="UTF-8">
  6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8   <title>Document</title>
  9   <style>
 10     * {
 11       padding: 0;
 12       margin: 0;
 13       list-style: none;
 14     }
 15 
 16     .container {
 17       width: 800px;
 18       margin: 10px auto;
 19     }
 20 
 21     ul {
 22       float: left;
 23     }
 24 
 25     ul li {
 26       margin-top: 10px;
 27     }
 28 
 29     .content {
 30       margin-left: 50px;
 31       width: 500px;
 32       float: left;
 33       border: 1px solid #999;
 34     }
 35 
 36     .content p {
 37       margin-top: 20px;
 38     }
 39 
 40     .active {
 41       background: hotpink;
 42     }
 43 
 44     .item img {
 45       width: 90px;
 46       height: 90px;
 47     }
 48 
 49     .item {
 50       display: none;
 51     }
 52 
 53     .selected {
 54       display: block;
 55     }
 56   </style>
 57 </head>
 58 
 59 <body>
 60   <div class="container">
 61     <ul>
 62       <li class="title active">choose</li>
 63       <li class="title">pay</li>
 64       <li class="title">ship</li>
 65     </ul>
 66     <div class="content">
 67       <div class="item selected">
 68         <img src="./img/1.jpg" alt="">
 69         <p>choose your gift</p>
 70       </div>
 71       <div class="item">
 72         <img src="./img/2.jpg" alt="">
 73         <p>give you gift</p>
 74       </div>
 75       <div class="item">
 76         <img src="./img/3.jpg" alt="">
 77         <p>thank you very much</p>
 78       </div>
 79     </div>
 80   </div>
 81   <script>
 82     let ul = document.querySelector('ul');
 83     let index = 0;
 84     let lis = document.querySelectorAll('li');
 85     for (let i = 0; i < 3; i++) {
 86       lis[i].setAttribute('data-index',`${i}`);
 87     }
 88     console.log(lis);
 89     let items = document.querySelectorAll('.item');
 90     ul.addEventListener('click',function(e = e || window.event){
 91       lis[index].classList.remove('active');
 92       e.target.classList.add('active');
 93       items[index].classList.remove('selected');
 94       index = +e.target.getAttribute('data-index');
 95       items[index].classList.add('selected');
 96     })
 97   </script>
 98  
 99 </body>
100 
101 </html>
游戏装备栏

动态创建表格

 知识点:有关创建元素的细节

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5   <meta charset="UTF-8">
  6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8   <title>Document</title>
  9   <link rel="stylesheet" href="css/user.css">
 10 </head>
 11 
 12 <body>
 13   <button>动态创建表格</button>
 14   <!-- <div id="box1">
 15 
 16   </div> -->
 17 
 18   <script>
 19 
 20     // 后端的数据
 21     var heads = ['姓名', '年龄', '性别', '学号', '薪资', '城市', '操作'];
 22     var datas = [{
 23       name: '欧阳霸天',
 24       age: 19,
 25       gender: '',
 26       stuId: '1001',
 27       salary: '20000',
 28       city: '上海'
 29     },
 30     {
 31       name: '令狐霸天',
 32       age: 19,
 33       gender: '',
 34       stuId: '1001',
 35       salary: '20000',
 36       city: '北京'
 37     },
 38     {
 39       name: '诸葛霸天',
 40       age: 19,
 41       gender: '',
 42       stuId: '1001',
 43       salary: '20000',
 44       city: '南京'
 45     },
 46     {
 47       name: '西门霸天',
 48       age: 19,
 49       gender: '',
 50       stuId: '1001',
 51       salary: '20000',
 52       city: '深圳'
 53     },
 54     {
 55       name: '上官霸天',
 56       age: 19,
 57       gender: '',
 58       stuId: '1001',
 59       salary: '20000',
 60       city: '北京'
 61     },
 62     {
 63       name: '欧阳霸天',
 64       age: 19,
 65       gender: '',
 66       stuId: '1001',
 67       salary: '20000',
 68       city: '上海'
 69     },
 70     {
 71       name: '令狐霸天',
 72       age: 19,
 73       gender: '',
 74       stuId: '1001',
 75       salary: '20000',
 76       city: '北京'
 77     },
 78     {
 79       name: '诸葛霸天',
 80       age: 19,
 81       gender: '',
 82       stuId: '1001',
 83       salary: '20000',
 84       city: '南京'
 85     },
 86     {
 87       name: '西门霸天',
 88       age: 19,
 89       gender: '',
 90       stuId: '1001',
 91       salary: '20000',
 92       city: '深圳'
 93     },
 94     {
 95       name: '上官霸天',
 96       age: 19,
 97       gender: '',
 98       stuId: '1001',
 99       salary: '20000',
100       city: '北京'
101     },
102     ];
103 
104     let btn = document.querySelector('button');
105     btn.addEventListener('click', function () {
106       let table = document.querySelector('table');
107       if (table == null) {
108         // 渲染标题
109         div = document.createElement('div');
110         document.body.appendChild(div);
111         div.id = 'box1';
112         let h3 = document.createElement('h3');
113         h3.style.color = '#fff';
114         h3.style.textAlign = 'center';
115         h3.style.fontSize = '36px';
116         h3.innerHTML = '就业榜';
117         div.appendChild(h3);
118         render();
119       }
120     })
121 
122     // 渲染表格
123     function render() {
124       let table = document.createElement('table');
125       let thead = document.createElement('thead');
126       let tbody = document.createElement('tbody');
127       table.appendChild(thead);
128       table.appendChild(tbody);
129       let tr = document.createElement('tr');
130       tr.innerHTML = heads.map(function (item) {
131         return `<th>${item}</th>`;
132       }).join('');
133       thead.appendChild(tr);
134 
135       tbody.innerHTML = datas.map(function (item) {
136         return `<tr>
137           <td>${item.name}</td>
138           <td>${item.age}</td>
139           <td>${item.gender}</td>
140           <td>${item.stuId}</td>
141           <td>${item.salary}</td>
142           <td>${item.city}</td>
143           <td><a>删除</a></td>
144           <tr>
145         `;
146       }).join('');
147       div.appendChild(table);
148 
149 
150       table.addEventListener('click',function(e = e || window.event){
151 
152         if (e.target.nodeName == 'A') {
153           let yea = confirm('确定删除吗');
154           if (yea == true) {
155             e.target.parentNode.parentNode.remove();
156             if (tbody.children.length == 10) {
157               div.innerHTML = '';
158             }
159           }
160          
161         }
162       })
163     }
164   </script>
165 </body>
166 
167 </html>
user.html
 1 * {
 2   margin: 0;
 3   padding: 0;
 4 }
 5 body {
 6   background:rgb(2, 78, 15);
 7 }
 8 button{
 9   width: 150px;
10   height: 30px;
11   display: block;
12   margin: 10px auto;
13   background: goldenrod;
14   color: #fff;
15   border-radius: 15px;
16   line-height: 30px;
17   outline: none;
18   border: none;
19   font-size: 18px;
20 }
21 a {
22   text-decoration: none;
23   color:#aaa;
24 }
25 caption {
26   text-align: center;
27   color:#fff;
28   margin: 20px 0;
29   font-size: 25px;
30  
31 }
32 table {
33   margin:0 auto;
34   width: 800px;
35   border-collapse: collapse;
36 }
37 th {
38   padding: 10px;
39   background: purple;
40   color:gold;
41   font-size: 20px;
42 }
43 td,th {
44   border:1px solid #ccc;
45 }
46 td {
47   padding:10px;
48   color:#666;
49   text-align: center;
50   font-size: 16px;
51 }
52 tbody tr {
53   background: #fff;
54 }
55 tbody tr:hover {
56   background: gold;
57 }
user.css

购物车

思路:模块化,函数封装

知识点:Array.from(目标) 将伪数组转为数组

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5   <meta charset="UTF-8">
  6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8   <title>Document</title>
  9   <style>
 10     * {
 11       margin: 0;
 12       padding: 0;
 13     }
 14 
 15     table {
 16       margin: 100px auto;
 17       border-collapse: collapse;
 18     }
 19 
 20     td,
 21     td {
 22       text-align: center;
 23       padding: 20px;
 24     }
 25 
 26     td img {
 27       width: 50px;
 28       height: 50px;
 29     }
 30 
 31     #num {
 32       width: 50px;
 33       height: 20px;
 34       line-height: 20px;
 35       outline: none;
 36     }
 37 
 38     button {
 39       width: 36px;
 40       height: 24px;
 41       line-height: 24px;
 42       text-align: center;
 43       border-radius: 8px;
 44     }
 45   </style>
 46 </head>
 47 
 48 <body>
 49   <div class="warp">
 50     <table border="1">
 51       <thead>
 52         <tr>
 53           <th></th>
 54           <th>名称</th>
 55           <th>单价</th>
 56           <th>数量</th>
 57           <th>小计</th>
 58         </tr>
 59       </thead>
 60       <tbody>
 61 
 62         <!-- <tr>
 63           <td>
 64             <input type="checkbox" name="" id="">
 65           </td>
 66           <td>
 67             <img src="./imgs/1.jpg" alt="">
 68             <p>Casio/卡西欧 EX-TR350</p>
 69           </td>
 70           <td>
 71             <span>5000</span>
 72           </td>
 73           <td>
 74             <button>-</button>
 75             <input type="text" id="num" value="1">
 76             <button>+</button>
 77           </td>
 78           <td>
 79             <span>5000</span>
 80           </td>
 81         </tr> -->
 82       </tbody>
 83       <tfoot>
 84         <tr>
 85           <td>
 86             <input type="checkbox" name="" id="all">全选
 87           </td>
 88           <td colspan="2">
 89             <span>总量:</span>
 90             <span>0</span>
 91           </td>
 92           <td colspan="2">
 93             <span>总金额:</span>
 94             <span>0</span>
 95           </td>
 96         </tr>
 97       </tfoot>
 98     </table>
 99   </div>
100   <script src="./libs/data.js"></script>
101   <script>
102 
103     // 获取tbody单选按钮
104     let tbody = document.querySelector('tbody');
105     // 获取tfoot中
106     let tfoot = document.querySelector('tfoot');
107     // 全选按钮
108     let all = document.querySelector('#all');
109 
110 
111     // 渲染tbody
112     render(shoppings);
113 
114     // 单选绑定click
115     tbody.addEventListener('click', function (e = e || window.event) {
116       // 每行tr 中的输入框
117       let ipt = e.target.parentNode.parentNode.children[3].children[1];
118       // 点击的是否是单选input并且type类型是checkbox  还是text
119       if (e.target.type == 'checkbox') {
120         // 计算总结 小计 和总量
121         getPrice();
122         // 是否全选
123         isAll();
124       }
125 
126       // 是否点击是+
127       if (e.target.innerHTML == '+') {
128         ipt.value = +ipt.value + 1;
129       }
130       // 是否点击是-
131       if (e.target.innerHTML == '-') {
132         if (ipt.value == 1) {
133           alert('数量不能小于1');
134           return;
135         }
136         ipt.value = +ipt.value - 1;
137 
138       }
139       // 计算总结 小计 和总量
140       getPrice();
141     });
142 
143     // 全选绑定点击事件
144     all.addEventListener('click', function () {
145       // 获取tbody中的input type类型为checkbox
146       let ipts = tbody.querySelectorAll('input[type=checkbox]');
147       // 点击全选让tbody中的每个复选框状态给全选保持一致
148       for (let i = 0; i < ipts.length; i++) {
149         ipts[i].checked = all.checked;
150       }
151       // 计算总结 小计 和总量
152       getPrice();
153     });
154 
155     // 渲染tbody
156     function render(data) {
157       tbody.innerHTML = data.map(function (item) {
158         return ` <tr>
159           <td>
160             <input type="checkbox" name="" id="">
161           </td>
162           <td>
163             <img src=${item.img} alt="">
164             <p>${item.name}</p>
165           </td>
166           <td>
167             <span>${item.price}</span>
168           </td>
169           <td>
170             <button>-</button>
171             <input type="text" id="num" value=${item.num}>
172             <button>+</button>
173           </td>
174           <td>
175             <span>${item.price * item.num}</span>
176           </td>
177         </tr>`;
178       }).join('');
179     }
180 
181     // 计算总价 小计 和总量
182     function getPrice() {
183       // 获取tbody中的所有input
184       let ipts = document.querySelectorAll('tbody input[type=checkbox]');
185       // 小计
186       let total = 0;
187       // 总价
188       let sum = 0;
189       // 总量
190       let count = 0;
191       for (let i = 0; i < ipts.length; i++) {
192         // tbody中每行(tr)
193         let tr = ipts[i].parentNode.parentNode;
194         // 复选框选中 需要累加小计和总价
195         if (ipts[i].checked) {
196           console.log(ipts[i].checked, i);
197           // 每行(tr)右侧的小计  每行数量* 每行单价
198           total = tr.children[3].children[1].value * tr.children[2].children[0].innerHTML;
199           // 每行小计
200           tr.children[4].innerHTML = `<span>${total}</span>`;
201           // 总价累加每行小计
202           sum += total;
203           // 总量累加
204           count += tr.children[3].children[1].value*1;
205         }
206       }
207 
208       // 最终要设置tfoot中的总价和总量
209       // 总价
210       tfoot.children[0].children[2].innerHTML = `总金额:${sum}`;
211       // 总量
212       tfoot.children[0].children[1].children[1].innerHTML = count;
213 
214 
215     }
216     // 是否全选
217     function isAll() {
218       // 获取所有单选按钮(要区分每行中的input  type值是checkbox还是text)
219       let checkboxs = tbody.querySelectorAll('input[type=checkbox]');
220       // 每个单选全部选中才是全选  Array.from 可以将伪数组转成数组 从而使用every
221       // all.checked = Array.from(checkboxs).every(function (item) {
222       //   return item.checked == true;
223       // });
224 
225       // 选中个数
226       let num = 0;
227       for (let i = 0; i < checkboxs.length; i++) {
228           if (checkboxs[i].checked) {
229             num++;
230           }
231       }
232 
233       all.checked = num == checkboxs.length ? true : false;
234     }
235 
236 
237   </script>
238 </body>
239 
240 </html>
index.html
 1 var shoppings = [{
 2     "img": "./imgs/1.jpg",
 3     "name": "Casio/卡西欧 EX-TR350",
 4     "price": 5000,
 5     "num": 1
 6   },
 7   {
 8     "img": "./imgs/2.jpg",
 9     "name": "Canon/佳能 PowerShot SX50 HS",
10     "price": 3000,
11     "num": 2
12 
13   },
14   {
15     "img": "./imgs/3.jpg",
16     "name": "Sony/索尼 DSC-WX300",
17     "price": 1300,
18     "num": 1
19   },
20   {
21     "img": "./imgs/4.jpg",
22     "name": "Fujifilm/富士 instax mini 25",
23     "price": 2999,
24     "num": 1
25   }
26 ]
data.js

DOM/BOM 期末考试(增题,自写) 

穿梭框

思路:this的利用 

 1 let toRight = document.querySelector('#toRight');
 2 let toLeft = document.querySelector('#toLeft');
 3 let toAllRight = document.querySelector('#toAllRight');
 4 let toAllLeft = document.querySelector('#toAllLeft');
 5 let se1 = document.querySelector('#se1');
 6 let se2 = document.querySelector('#se2');
 7 let l;
 8 let r;
 9 let lstr = '';
10 let rstr = '';
11 
12 left();
13 // 注意:渲染重新调用事件
14 // 单个移动
15 toRight.addEventListener('click', function () {
16     se2.innerHTML += lstr;
17     l.remove();
18     right();
19 })
20 toLeft.addEventListener('click', function () {
21     se1.innerHTML += rstr;
22     r.remove();
23     left();
24 })
25 // 全部移动
26 toAllRight.addEventListener('click',function(){
27     se2.innerHTML += se1.innerHTML;
28     se1.innerHTML = '';
29     left();
30     right();
31 })
32 toAllLeft.addEventListener('click',function(){
33     se1.innerHTML += se2.innerHTML;
34     se2.innerHTML = '';
35     left();
36     right();
37 })
38 // 更改左右数据函数
39 function left() {
40     for (let i = 0; i < se1.children.length; i++) {
41         se1.children[i].addEventListener('click', function () {
42             lstr = `<option>${this.innerHTML}</option>`;
43             l = this;
44         })
45     }
46 }
47 function right() {
48     for (let j = 0; j < se2.children.length; j++) {
49         se2.children[j].addEventListener('click', function () {
50             rstr = `<option>${this.innerHTML}</option>`;
51             r = this;
52         })
53     }
54 }
index.js
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <title></title>
 6 
 7 </head>
 8 <body>
 9   <div style="margin-left: 500px; margin-top: 100px; background-color: #999999">
10     <select multiple="multiple" style="float: left; width: 60px; height: 100px;" id="se1">
11       <option>添加</option>
12       <option>删除</option>
13       <option>修改</option>
14       <option>查询</option>
15       <option>打印</option>
16     </select>
17     <div style="width: 50px; float: left;">
18       <input type="button" name="name" value=">" style="width: 50px;" id="toRight" />
19       <input type="button" name="name" value="<" style="width: 50px;" id="toLeft" />
20       <input type="button" name="name" value=">>" style="width: 50px;" id="toAllRight" />
21       <input type="button" name="name" value="<<" style="width: 50px;" id="toAllLeft" />
22     </div>
23     <select multiple="multiple" style="float: left; width: 60px; height: 100px;" id="se2">
24 
25     </select>
26   </div>
27   <script src="./index.js">
28    
29 
30 
31   </script>
32 </body>
33 
34 </html>
index.html

随机点名器

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7   <title>Document</title>
 8   <style>
 9     .container {
10       width: 1600px;
11       position: absolute;
12       left: 50%;
13       transform: translate(-50%);
14       height: 643px;
15       background: url(./images.jpg) no-repeat;
16     }
17 
18     .content {
19       width: 700px;
20       height: 350px;
21       position: absolute;
22       top: 50%;
23       left: 50%;
24       transform: translate(-50%, -50%);
25       text-align: center;
26     }
27 
28     .content p {
29       color: #138eee;
30       font-size: 66px;
31     }
32 
33     .content span {
34       color: #fff;
35       font-size: 25px;
36       font-weight: 700;
37     }
38   </style>
39 </head>
40 
41 <body>
42   <div class="container">
43     <div class="content">
44       <p>亲,准备好点名了吗?</p>
45       <span>开始点名</span>
46     </div>
47   </div>
48   <script>
49     // 定义数据
50     var names = ["王亚亚", "康春龙", "谢仲龙", "袁旭东", "范志伟", "杜鑫博", "官呈达", "谌雯雯", "杨文林", "周子轩", "苏傲"]
51     let p = document.querySelector('p');
52     let span = document.querySelector('span');
53     var testNum = true;
54     span.addEventListener('click', function () {
55       if (testNum) {
56         start();
57         testNum = false;
58       }else {
59         stop();
60         testNum = true;
61       }
62     })
63 
64     function start() {
65       var a = 0;
66       timeid = setInterval(function () {
67         p.innerHTML = names[a];
68         a++;
69         if (a == names.length) {
70           a = 0;
71         }
72       }, 100);
73     }
74     function stop() {
75       clearInterval(timeid);      
76     }
77   </script>
78 </body>
79 
80 </html>
index.html

知识点:设置定时器开关

美女时钟

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <title>title</title>
 7 
 8 </head>
 9 
10 <body>
11   <img  alt="" id="im" />
12   <script>
13     let img = document.querySelector('img');
14     let date = new Date();
15     img.src = `./meimei/${date.getHours() < 10 ? '0' + date.getHours() : date.getHours()}_${date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()}.jpg`;
16     start();
17 
18     function start() {
19       timeid = setInterval(function () {
20         let date = new Date();
21         img.src = `./meimei/${date.getHours() < 10 ? '0' + date.getHours() : date.getHours()}_${date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()}.jpg`;
22       }, 1000);
23     }
24 
25     // function stop() {
26     //   clearInterval(timeid);
27     // }
28     // img.addEventListener('mouseover', function () {
29     //   start();
30     // })
31     // img.addEventListener('mouseout', function () {
32     //   stop();
33     // })
34   </script>
35 
36 </body>
37 
38 </html>
index.html

知识点:三元表达式运用

键盘字母高亮

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7   <title>Document</title>
 8   <style>
 9     * {
10       padding: 0;
11       margin: 0;
12       list-style: none;
13     }
14 
15     ul {
16       width: 800px;
17       margin: 100px auto;
18     }
19 
20     li {
21       border: 1px solid #f00;
22       width: 80px;
23       float: left;
24       text-align: center;
25       height: 30px;
26       line-height: 30px;
27     }
28 
29     .active {
30       background-color: #0F0
31     }
32   </style>
33 </head>
34 
35 <body>
36   <ul class="box">
37 
38   </ul>
39   <script>
40     // - 把给定的数据渲染到页面上
41     //  - 键盘按下对应的数据的哪个键,页面中对应的那个数据的就会选中,添加背景色
42     var allKey = ["1", '2', '3', '4', '5', '6', '7', '8', '9', '0', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U',
43       'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M'
44     ];
45     let ul = document.querySelector('ul');
46     ul.innerHTML = allKey.map(function(item){
47       return `<li>${item}</li>`;
48     }).join('');
49     let index;
50     document.addEventListener('keydown',function(e){
51       index > -1 && ul.children[index].classList.remove('active');
52       index = allKey.indexOf(e.key.toUpperCase());
53       console.log(e.key);
54       index > -1 && ul.children[index].classList.add('active');
55     })
56   </script>
57 </body>
58 
59 </html>
index.html
1 index = allKey.indexOf(e.key.toUpperCase());
2       console.log(e.key);

知识点:

  • e.key键盘事件的字母
  • indexof(字符串)查找位置

选择拼接字符串 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8 </head>
 9 
10 <body>
11     <p><input type="text" id="tt" /></p>
12     <div id="box">
13         <label><input type="checkbox" value="a" />a</label>
14         <label><input type="checkbox" value="b" />b</label>
15         <label><input type="checkbox" value="c" />c</label>
16         <label><input type="checkbox" value="d" />d</label>
17         <label><input type="checkbox" value="e" />e</label>
18         <label><input type="checkbox" value="f" />f</label>
19     </div>
20     <script>
21         let inputs = document.querySelectorAll('input');
22 
23         for (let i = 1; i < inputs.length; i++) {
24             inputs[i].addEventListener('click', function () {
25                 if (inputs[i].checked == true) {
26                     inputs[0].value += ',' + inputs[i].value;
27                     if (inputs[0].value[0] == ',') {
28                         let between = inputs[0].value.split('');
29                         between.splice(0, 1);
30                         inputs[0].value = between.join('');
31                     }//利用splice
32                 } else {
33                     let index = inputs[0].value.indexOf(inputs[i].value);
34                     let z = inputs[0].value.split('');
35                     if (index == 0) {
36                         z.splice(index, 1);
37                         z.splice(index, 1);
38                         inputs[0].value = z.join('');
39                     } else {
40                         z.splice(index, 1);
41                         z.splice(index - 1, 1);
42                         inputs[0].value = z.join('');
43                     }
44                 }
45             })
46         }
47     </script>
48 </body>
49 
50 </html>
index.html

思路:数组与字符串相互转换,方法的调用

表单校验(本地存储的应用)

 

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5   <meta charset="UTF-8">
  6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7   <title>Document</title>
  8   <style>
  9     .error {
 10       color: #c81523;
 11     }
 12 
 13     .error_icon,
 14     .success_icon {
 15       display: inline-block;
 16       vertical-align: middle;
 17       width: 20px;
 18       height: 20px;
 19       background: url(./images/error.png) no-repeat;
 20       margin-top: -2px;
 21     }
 22 
 23     .success {
 24       color: green;
 25     }
 26 
 27     .success_icon {
 28       background: url(./images/success.png) no-repeat;
 29     }
 30 
 31     strong {
 32       font-weight: normal;
 33     }
 34   </style>
 35 </head>
 36 
 37 <body>
 38   <form action="http://www.baidu.com" method="get" onsubmit="return checkForm()">
 39 
 40     <table border="1" width="50%" align="center">
 41       <tr align="center">
 42         <td colspan="2">
 43           <font color="cadetblue">会员注册</font>
 44         </td>
 45       </tr>
 46 
 47       <tr>
 48         <td>
 49           用户名
 50         </td>
 51         <td>
 52           <input type="text" name="username" id="username" />
 53           <span>
 54             <i></i>
 55             <strong></strong>
 56           </span>
 57         </td>
 58       </tr>
 59 
 60       <tr>
 61         <td>
 62           密码
 63         </td>
 64         <td>
 65           <input type="password" name="password" id="password" />
 66           <span>
 67             <i></i>
 68             <strong></strong>
 69           </span>
 70         </td>
 71       </tr>
 72 
 73       <tr>
 74         <td>
 75           确认密码
 76         </td>
 77         <td>
 78           <input type="password" name="repassword" id="repassword" />
 79           <span>
 80             <i></i>
 81             <strong></strong>
 82           </span>
 83         </td>
 84       </tr>
 85 
 86       <tr align="center">
 87         <td colspan="2">
 88           <input type="submit" value="注册" />
 89         </td>
 90       </tr>
 91     </table>
 92   </form>
 93   <script>
 94     // 获取元素
 95     var uname = document.querySelector('#username')
 96     var pwd = document.querySelector('#password')
 97     var repwd = document.querySelector('#repassword')
 98     var btn = document.querySelector('input[type=submit]')
 99 
100 
101     //用户名校验
102     uname.onblur = function () {
103       if (this.value.trim().length == 0) {
104         this.nextElementSibling.className = "error"
105         this.nextElementSibling.children[0].className = "error_icon"
106         this.nextElementSibling.children[1].innerText = "用户名不能为空,请重新输入"
107       } else {
108         this.nextElementSibling.className = "success"
109         this.nextElementSibling.children[0].className = "success_icon"
110         this.nextElementSibling.children[1].innerText = "用户名格式正确"
111       }
112     }
113     var firstpwd;
114     // 密码校验
115     pwd.onblur = function () {
116       if (this.value.trim().length < 6 || this.value.trim().length > 10) {
117         this.nextElementSibling.className = "error"
118         this.nextElementSibling.children[0].className = "error_icon"
119         this.nextElementSibling.children[1].innerText = "密码得长度范围必须在6-10,请重新输入"
120       } else {
121         firstpwd = this.value.trim();
122         this.nextElementSibling.className = "success"
123         this.nextElementSibling.children[0].className = "success_icon"
124         this.nextElementSibling.children[1].innerText = "密码格式正确"
125       }
126     }
127 
128     // 密码校验
129     repwd.onblur = function () {
130       // 判断两个密码是否相等
131       var secondpwd = this.value.trim()
132       if (firstpwd !== secondpwd) {
133         this.nextElementSibling.className = "error"
134         this.nextElementSibling.children[0].className = "error_icon"
135         this.nextElementSibling.children[1].innerText = "两次密码输入不一样,请重新输入"
136       } else {
137         this.nextElementSibling.className = "success"
138         this.nextElementSibling.children[0].className = "success_icon"
139         this.nextElementSibling.children[1].innerText = "两次密码输入一致"
140       }
141 
142     }
143 
144     btn.addEventListener('click', function (e) {
145       e.preventDefault();
146       if (uname.value.trim().length == 0 || pwd.value.trim().length == 0 || repwd.value.trim().length == 0) {
147         alert('请校验您是否输入没有问题')
148       } else {
149         location.href = "./login.html"
150       }
151 
152     })
153   </script>
154 
155 </body>
156 
157 </html>
register.html
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7   <title>Document</title>
 8 </head>
 9 
10 <body>
11   <form action="http://www.baidu.com" method="get" onsubmit="return checkForm()">
12 
13     <table border="1" width="50%" align="center">
14       <tr align="center">
15         <td colspan="2">
16           <font color="cadetblue">会员登陆</font>
17         </td>
18       </tr>
19 
20       <tr>
21         <td>
22           用户名
23         </td>
24         <td>
25           <input type="text" name="username" id="username" />
26         </td>
27       </tr>
28 
29       <tr>
30         <td>
31           密码
32         </td>
33         <td>
34           <input type="password" name="password" id="password" />
35         </td>
36       </tr>
37 
38       <tr align="center">
39         <td colspan="2">
40           <input type="submit" value="登陆" />
41         </td>
42       </tr>
43     </table>
44   </form>
45   <script>
46     // 获取元素
47     var uname = document.querySelector('#username')
48     var pwd = document.querySelector('#password')
49     var btn = document.querySelector('input[type=submit]')
50 
51     btn.addEventListener('click', function (e) {
52       e.preventDefault();
53       if (uname.value.trim().length == 0 || pwd.value.trim().length == 0) {
54         alert('请校验您是否输入没有问题')
55       } else {
56         location.href = "./index.html"
57       }
58 
59     })
60   </script>
61 
62 </body>
63 
64 </html>
login.html
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7   <title>Document</title>
 8 </head>
 9 
10 <body>
11   恭喜您,登陆成功,进入首页
12 </body>
13 
14 </html>
index.html

 

posted @ 2021-01-07 09:19  Updown_h  阅读(401)  评论(0编辑  收藏  举报