HTML+CSS+JavaScript实现全国三级城市select选择

下面先展示效果图

这个图片就是一打开网站默认的情况下的图片

下面的图片就是进行切换省之后的样子

在下面的程序中,将省略部分省市县。

下面是HTML文件中的内容

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>全国三级城市</title>

<!--这段代码的意思就是引入CSS样式文件-->
        <link rel="stylesheet" type="text/css" href="style.css"/>
    </head>
    <body>
        <select id="province">
            <!-- 省 -->
        </select>
        <select id="city">
            <!-- 市 -->
        </select>
        <select id="district">
            <!-- 县 -->
        </select>

<!--下面这段代码就是引入JS文件-->
        <script src="js.js" type="text/javascript" charset="utf-8"></script>
        
    </body>
</html>

下面是CSS文件中的内容,可有可无。这次的侧重点不在CSS(标签选择器)

select{
    width: 100px;
    height: 30px;
}

下面的代码是JS文件中的代码

var province = document.getElementById("province");
var city = document.getElementById("city");
var district = document.getElementById("district");
/* 
  两种方式创建元素
  第一种:
  var option=document.createElement("option");
  option.text="上海";
  option.value="sh";
  province.appendChild(option);
  第二种方法:
  var option = new Option("上海","sh");
  province.options.add(option);
 */
/* 这个数组里面存储的是对象 */
var provinceList = [{
        name: "北京市",
        cityList: [{
            name: "市辖区",
            districtList: ["东城区", "西城区"]
        }, {
            name: "县",
            districtList: ["密云县", "延庆县"]
        }]
    },
    {
        name: "四川省",
        cityList: [{
            name: "成都市",
            districtList: ["市辖区","锦江区","青羊区"]
        }, {
            name: "自贡市",
            districtList: ["市辖区","自流井区","贡井区"]
        }]
    }
];
/* provinceList.length有多大,就说明省份有多少个 */
for (var i = 0; i < provinceList.length; i++) {
    /* 这省份加入到第一组options中 */
    /* 下面这个name是一个对象 */
    var option = new Option(provinceList[i].name, provinceList[i].name);
    /* 将新new出来的对象加入到option行列之中 */
    province.options.add(option);
}

/* 监听选中操作   下面这行代码绑定事件 */
/* 当省份选中的时候 */
province.onchange = changeProvince;

function changeProvince() {
    /* 当province改变的时候,就会执行这段代码 */
    /* 一定要清空上一个省份下面的市以及县级别 */
    city.length = 0;
    district.length=0;
    /* province.selectedIndex 这个属性会告诉你选中的第几个,类似一个标号 */
    var cityList = provinceList[province.selectedIndex].cityList;
    for (var i = 0; i < cityList.length; i++) {
        var option = new Option(cityList[i].name, cityList[i].name);
        city.options.add(option);
        /* 这段代码和 省 的加入的那段代码相同 */
    }
    /* 这一行代码也很关键,相当于给了一个选择的默认值,当选择了省以后,就会出来市(上面代码实现的) */
    /* 接下来还会出现县级单位,是下面这行代码所实现的 */
    changeCity();
}

/* 当城市被选中的时候 */
city.οnchange=changeCity;

function changeCity(){
    /* 要求市一下的进行展示 */
    /* 将以前的清零 */
    district.length=0;
    var districtList = provinceList[province.selectedIndex].cityList[city.selectedIndex].districtList;
   for(var i=0;i<districtList.length;i++){
       var option = new Option(districtList[i],districtList[i]);
       district.options.add(option);
   }
}

/* 当不做操作的时候,放一个默认值,就是一打开页面就有的一个默认值 */
changeProvince();
changeCity();
 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱布朗熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值