用原生态js和用vue分别写选择省地址就会出现地级市地址

下面是原生态js开发,以下是全部代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>地址</title>
    
</head>
<body>
  <script>
      var province=["广东省","福建","广西"];
      var citys=[];
      citys[0]=["广州市","深圳市","佛山市","东莞市","中山市","珠海市","江门市","肇庆市","惠州市","汕头市","湛江市","揭阳市"];
      citys[1]=["福州","厦门","漳州","泉州","莆田","三明","南平","龙岩","宁德"];
      citys[2]=["南宁市","崇左市","柳州市","来宾市","桂林市","梧州市","贺州市","玉林市","贵港市","百色市","钦州市"];
             for (var k=0;k<2;k++){
                 var se=document.createElement("select");

                 document.body.appendChild(se);
             }
            var sel=document.getElementsByTagName("select");
             for (var i=0;i<province.length;i++){
                 var nod=document.createElement("option");
                 nod.innerHTML=province[i];
                 
                 sel[0].appendChild(nod);
             }
        sel[0].onclick=function () {
            var ind=this.selectedIndex;
            var city=citys[ind];
            sel[1].innerHTML="";
            for (var j=0,len=city.length;j<len;j++) {
                var nod2=document.createElement("option");
                nod2.innerHTML=city[j];
                sel[1].appendChild(nod2);
            }
        }



  </script>


</body>
</html>

解释:

这个是用for循环产生两个select:

for (var k=0;k<2;k++){
                 var se=document.createElement("select");

                 document.body.appendChild(se);
             }

 

 用for循环给第一个select添加选择option和内容,每次循环都要创建节点,节点添加内容,然后给第一个select添加这个创建的节点:

 var sel=document.getElementsByTagName("select");
             for (var i=0;i<province.length;i++){
                 var nod=document.createElement("option");
                 nod.innerHTML=province[i];
                 
                 sel[0].appendChild(nod);
             }

 

 点击第一个select的option,this代表sel[0]这个对象,而selectedIndex记录用户点击是哪个的下标,然后把点击下标对应的citys数组赋给新的数组,把这新的数组的数据用for循环赋给第二个select的option内容,用户每次点击完都要用sel[1].innerHTML=""把上次的内容清零,不然就会留着上次的数据在里面

  sel[0].onclick=function () {
            var ind=this.selectedIndex;
            var city=citys[ind];
            sel[1].innerHTML="";
            for (var j=0,len=city.length;j<len;j++) {
                var nod2=document.createElement("option");
                nod2.innerHTML=city[j];
                sel[1].appendChild(nod2);
            }
        }

 

 用js的框架vue来开发,以下是全部代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="vue.js"></script>
    <title>Title</title>
</head>
<body>
         <div id="app">
              <label>省:</label>
             <select v-model="selected">

                 <option v-for="option in options" v-bind:value="option.city" >
                     {{option.province}}
                 </option>
             </select>
             <label>地级市:</label>
             <select>
                 <option v-for="sel in selected">
                     {{sel}}
                 </option>
             </select>


         </div>
       <script>

         new Vue({
             el:"#app",
             data:{
                 selected:'',
                options:[
                    {province:'广东省',city:["广州市","深圳市","佛山市","东莞市","中山市","珠海市","江门市","肇庆市","惠州市","汕头市","湛江市","揭阳市"]},
                    {province:'福建',city:["福州","厦门","漳州","泉州","莆田","三明","南平","龙岩","宁德"]},
                    {province:'广西',city:["南宁市","崇左市","柳州市","来宾市","桂林市","梧州市","贺州市","玉林市","贵港市","百色市","钦州市"]}
                ]
             }
         })

    </script>
</body>
</html>

 解释:

vue相对简单点,就是用v-for循环打印option,关键是用v-bind声明value属性,每次点击对应的city数alue,而v-model就是获取value的值,就是说v-model声明的selected的值就是value的值,用for循环v-model的值给第二个select的option赋值

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值