当前位置: 首页 > news >正文

下拉列表框实现二级联动

xml文件

 1 <?xml version="1.0" encoding="gb2312"?>
 2 <china>
 3     <province name="吉林省">
 4         <city>长春</city>
 5         <city>吉林市</city>
 6         <city>四平</city>
 7         <city>松原</city>
 8         <city>通化</city>
 9     </province>
10     <province name="辽宁省">
11         <city>沈阳</city>
12         <city>大连</city>
13         <city>鞍山</city>
14         <city>抚顺</city>
15         <city>铁岭</city>
16     </province>
17     <province name="山东省">
18         <city>济南</city>
19         <city>青岛</city>
20         <city>威海</city>
21         <city>烟台</city>
22         <city>廊坊</city>
23     </province>
24 </china

下面使用DOM解析,将解析到的province放到左边的下拉列表中,点击选择下拉列表中的省份,在右边的下拉列表里显示该省份下对应的城市city

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 2 <html>
 3   <head>
 4     <title>DOM解析cities</title>
 5   </head>
 6   <body>
 7          <select id="province" name="province">
 8              <option value="">请选择......</option>
 9              <option value="吉林省">吉林省</option>
10              <option value="辽宁省">辽宁省</option>
11              <option value="山东省">山东省</option>
12          </select>
13          <select id="city" name="city">
14              <option value="">请选择......</option>
15          </select>
16          <script type="text/javascript">
17              window.onload=function(){
18                  document.getElementById("province").onchange=function(){
19                      //获取变化的省的值
20                      var changeProvinceValue=this.value;
21 /**********************************************************************************************/
22                 //清空城市的下拉选
23                 var cityElement=document.getElementById("city");
24                 
25                 //获得所有的option
26                 var cityOptionElements=cityElement.getElementsByTagName("option");
27                 
28                 //从后往前删
29                 for(var i=cityOptionElements.length-1;i>0;i--){
30                     cityElement.removeChild(cityOptionElements[i]);
31                 }
32 /**********************************************************************************************/
33                      //alert(changeProvinceValue);
34                      //测试xml是否加载成功
35                      var xmlDoc=parseXML("cities.xml");
36 /**********************************************************************************************/
37                      var provinceElement=null;
38                      
39                      //<province>定位到具体省
40                      var xmlprovinceElements=xmlDoc.getElementsByTagName("province");
41                      for(var i=0;i<xmlprovinceElements.length;i++){
42                      
43                          var xmlProvinceElement=xmlprovinceElements[i];
44                          var nameAttrValue=xmlProvinceElement.getAttribute("name");
45                          if(changeProvinceValue==nameAttrValue){
46                              //把符合条件的省的元素保存到外部
47                              provinceElement=xmlProvinceElement;
48                              break;
49                          }
50                      }
51 /**********************************************************************************************/
52                     
53                     if(provinceElement!=null){
54                         //获得省下所有的city节点
55                         var xmlCityElements=provinceElement.getElementsByTagName("city");
56                         for(var i=0;i<xmlCityElements.length;i++){
57                             var cityValue=xmlCityElements[i].firstChild.nodeValue;
58                         //    alert(cityValue);
59                             //创建option标签
60                             var optionElement=document.createElement("option");
61                             optionElement.setAttribute("value", cityValue);
62                             //文本节点
63                             var cityTextElement=document.createTextNode(cityValue);
64                             //------------------------------------
65                             optionElement.appendChild(cityTextElement);
66                             
67                             //获得cityElement
68                             var cityElement=document.getElementById("city");
69                             //添加option到select
70                             cityElement.appendChild(optionElement);
71                         }
72                     }
73                  }
74              }
75              
76              /*
77               *
78               *DOM解析器
79               *
80               *
81               */
82              function parseXML(filename){
83                  try{    //Internet Explorer
84                      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
85                      
86                  }catch(e){
87                      try{ //Firefox, Chrome, Opera, Safari
88                          xmlDoc = document.implementation.createDocument("", "", null);
89                      }catch(e){}
90                  }
91                  xmlDoc.async=false;  //关闭异步加载
92                 xmlDoc.load(filename);  //加载xml文档
93                 return xmlDoc;
94              }
95          </script>
96   </body>
97 </html>

转载于:https://www.cnblogs.com/0519xf/p/4709522.html

相关文章:

  • 修改乱码的方法
  • 微信网站注意事项
  • iOS 9应用开发教程之显示编辑文本标签文本框
  • pip常用命令
  • scala学习之类和对象
  • 志于道,志之所趋,无远弗届
  • LeetCode Divide Two Integers
  • iOS学习路线图
  • 阿里内推面试
  • ajax和json详解
  • ip地址合法性
  • Appium 的安装启动
  • thinkphp框架中处理标签中条件输出
  • CSS3实现图片循环旋转
  • TCP/IP详解 卷一(第十四章 DNS:域名系统)
  • 收藏网友的 源程序下载网
  • 【个人向】《HTTP图解》阅后小结
  • 2017 前端面试准备 - 收藏集 - 掘金
  • FineReport中如何实现自动滚屏效果
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript 基础知识 - 入门篇(一)
  • Linux gpio口使用方法
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • spring security oauth2 password授权模式
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 百度小程序遇到的问题
  • 成为一名优秀的Developer的书单
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 那些年我们用过的显示性能指标
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 通过几道题目学习二叉搜索树
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 如何正确理解,内页权重高于首页?
  • # 数据结构
  • #if 1...#endif
  • (10)ATF MMU转换表
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (day 12)JavaScript学习笔记(数组3)
  • (poj1.3.2)1791(构造法模拟)
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (十三)Flask之特殊装饰器详解
  • (一)基于IDEA的JAVA基础12
  • (转)EXC_BREAKPOINT僵尸错误
  • .bashrc在哪里,alias妙用
  • .net MVC中使用angularJs刷新页面数据列表
  • .net 发送邮件
  • .NET 药厂业务系统 CPU爆高分析
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • @31省区市高考时间表来了,祝考试成功
  • @ConditionalOnProperty注解使用说明