Javascript调用XML制作连动下拉列表框


Posted in Javascript onJune 25, 2006

传统的HTML页面中连动下拉框采用了两种方法:
1)直接将下拉框中的内容hardcode于html的javascript中,调用javascript函数循环写入下拉框中。这种方法不适用于下拉框内容经常改变的情况。因为数据源和javascript程序写死在同一页面。

<html>
<head>
<title>List</title>
<meta http-equiv="Content-Type" content="text/html; c
harset=gb2312">
<script LANGUAGE="javascript">
<!--
var onecount;
onecount=0;

subcat = new Array();
subcat[0] = new Array("徐汇区","01","001");
subcat[1] = new Array("嘉定区","01","002");
subcat[2] = new Array("黄浦区","01","003");
subcat[3] = new Array("南昌市","02","004");
subcat[4] = new Array("九江市","02","005");
subcat[5] = new Array("上饶市","02","006");

onecount=6;

function changelocation(locationid)
{
document.myform.smalllocation.length = 0;

var locationid=locationid;
var i;
document.myform.smalllocation.options[0] = new Option('====所有地区====','');
for (i=0;i <onecount; i++)
{
if (subcat[i][1] == locationid)
{
document.myform.smalllocation.options[document.myform.smalllocation.length]
= new Option(subcat[i][0], subcat[i][2]);
}
}

}

//-->
</script>
</head>
<body>
<form name="myform" method="post">
<select name="biglocation"
onChange="changelocation(document.myform.biglocation.options[document.myform.biglocation.selectedIndex].value)">
<option value="01" selected>上海</option>
<option value="02">江西</option>
</select>
<select name="smalllocation">
<option selected value="">==所有地区==</option>
</select>
</form>
<script LANGUAGE="javascript">
<!--
changelocation(document.myform.biglocation.options[document.myform.biglocation.selectedIndex].value);
//-->
</script>
</body>
</html>

2)javascript 直接读取数据库,取数据库中的记录写入javascript中,然后和第一种方法一样,调用javascript函数循环写入下拉框中。此方法将数据源与javascript分开,但,公开数据库的连接,从安全角度说,没有多少实用价值。

我的方法是将下拉框中的数据放在XML文件中,用javascript读XML文件,取得下拉框中的内容。

HTML 文件如下:
<!-- myfile.html -->
<html>
<head>
<script language="JavaScript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
var i=0;
var j=0;
var subclass_name="";
loadXML();
function loadXML(){
  xmlDoc.async="false";
  xmlDoc.load("account.xml");
  xmlObj=xmlDoc.documentElement;
  nodes = xmlDoc.documentElement.childNodes;
  document.frm.mainclass.options.length = 0;
  document.frm.subclass.options.length = 0;

  for (i=0;i<xmlObj.childNodes.length;i++){
    labels=xmlObj.childNodes(i).getAttribute("display_name");
    values=xmlObj.childNodes(i).text;
    document.frm.mainclass.add(document.createElement("OPTION"));
    document.frm.mainclass.options[i].text=labels;
    document.frm.mainclass.options[i].value=values;
  }
}
</script>

<script language="JavaScript" >
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
var i=0;
var j=0;

function setsubclass(main){
  var is_selected="N";
  if (document.frm.subclass.options.length!=0) {
    for (i=0;i<=document.frm.subclass.options.length;i++)
    document.frm.subclass.options[i]=null ;
  }
  //重复才有效
  if (document.frm.subclass.options.length!=0) {
    for (i=0;i<=document.frm.subclass.options.length;i++){
    document.frm.subclass.options[i]=null ;
    document.frm.subclass.options.remove(i);
    }
  }

  for (i=0;i<xmlObj.childNodes.length;i++){
    var values="";
    var lables="";
    if (is_selected=="Y") return;
    labels=xmlObj.childNodes(i).getAttribute("display_name");
    values=xmlObj.childNodes(i).text;
    //alert(labels+ " | "+main);
    if (labels==main){
      is_selected="Y";
      for (j=0;j<xmlObj.childNodes(i).childNodes.length;j++){
      //subclass_name="document.frm.subclass";
      labels=xmlObj.childNodes(i).childNodes(j).getAttribute("display_name");
      values=xmlObj.childNodes(i).childNodes(j).text;
      //alert(values);
      document.frm.subclass.add(document.createElement("OPTION"));
      document.frm.subclass.options[j].text=labels;
      document.frm.subclass.options[j].value=values;
      }
    }
  }
}
</script>

<title>在HTML中调用XML数据</title>
</head>
<body bgcolor="#FFFFFF">
<FORM NAME="frm">
类型<SELECT NAME="mainclass" OnChange='setsubclass(this[selectedIndex].text)'></SELECT>
<option selected value="" ></option>
子类<SELECT NAME="subclass"></SELECT>
</form>
</body>
</html>

account.xml 如下:

<?xml version="1.0" encoding="gb2312"?>
<item>
 <class display_name="未选定">
  <subclass display_name="">Not Available</subclass>
 </class>
 <class display_name="推荐网站">
  <subclass display_name="看上去很美">www.7say.com</subclass>
  <subclass display_name="移动互联">www.xj139.com</subclass>
  <subclass display_name="众信实业">www.xjzxsy.com</subclass>
 </class>
 <class display_name="门户网站">
  <subclass display_name="新浪">www.sina.com</subclass>
  <subclass display_name="搜狐">www.sohu.com</subclass>
 </class>
 <class display_name="其它网站">
  <subclass display_name="蓝色理想">www.blueidea.com</subclass>
 </class>
</item>

Javascript 相关文章推荐
js函数的引用, 关于内存的开销
Sep 17 Javascript
js实现在页面上弹出蒙板技巧简单实用
Apr 16 Javascript
JavaScript用Number方法实现string转int
May 13 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
Jan 23 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
Dec 08 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
Feb 09 Javascript
footer定位页面底部(代码分享)
Mar 07 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
May 14 Javascript
javascript关于“时间”的一次探索
Jul 24 Javascript
Ajax常用封装库——Axios的使用
May 08 Javascript
网页里控制图片大小的相关代码
Jun 25 #Javascript
如何取得中文输入的真实长度?
Jun 24 #Javascript
快速保存网页中所有图片的方法
Jun 23 #Javascript
网页常用特效代码整理
Jun 23 #Javascript
文本加密解密
Jun 23 #Javascript
解密效果
Jun 23 #Javascript
CheckBox 如何实现全选?
Jun 23 #Javascript
You might like
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
深入Python函数编程的一些特性
2015/04/13 Python
Python 序列的方法总结
2016/10/18 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
年会活动策划方案
2014/01/23 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
努力学习保证书
2015/02/26 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL
netty 实现tomcat的示例代码
2022/06/05 Servers