javascript实现下拉条联动_js实现多级联动下拉框

花了半天时间实现一个多级联动下拉框,目的是对某一植物进行“门纲目科属”的归类。使用的技术是javascript+xml,之所以不用数据库,一来这方面的数据虽然量大但都是固定不变的,二来不希望加重服务器的负担,第三是因为这种多级从属关系的数据不太适合放在数据库里。

这是大概的思路:

1、读取xml文件

2、当一个下拉框选中某选项时,根据该选项,当前节点指向下一层,进入下一层下拉框的设置

3、取消当前下拉框的禁用,禁用下一层的下拉框

4、清空当前下拉框的选项

5、根据当前节点读取xml的数据,设置下拉框选项

6、返回步骤2

代码:

JavaScript

Javascript代码

//载入xml文件

varxmlDoc=newActiveXObject("Microsoft.XMLDOM");

xmlDoc.async =false;

xmlDoc.load("classify.xml");

varcurrentNode;//当前所在节点

//读取xml文件数据并设置门、纲、目、科、属的下拉框

//设置“门”的下拉框

functionsetPhylum(){

currentNode=xmlDoc.documentElement;

varphylums = currentNode.childNodes;

for(vari=0;i

//从门到属,都有name属性标签,并且所有下拉框选项索引都是从1开始

varphylumName=phylums(i).selectNodes("name")(0).text;

document.forms[0].phylum.options[i+1]=newOption(phylumName,phylumName);

}

}

//设置“纲”的下拉框

functionsetClazz(selectedIndex){

//取消下拉框的禁用

//后面的下拉框禁用,这是因应各下拉框的无序选择可能产生的错误

//比如选了“科”又回头重新选“目”,或更改同一个下拉框选项)

document.forms[0].clazz.disabled=null;

document.forms[0].order.disabled="disabled";

document.forms[0].family.disabled="disabled";

document.forms[0].genus.disabled="disabled";

//将选中的门节点作为当前节点,注意这里需要将索引回减1

//因为门的父节点没有name属性标签,而下拉框的索引又是从1开始

//currentNode的赋值应使用绝对定位,也是因应各下拉框的无序选择

//currentNode=currentNode.childNodes(selectedIndex-1);

currentNode=xmlDoc.documentElement.childNodes(selectedIndex-1);

varclazzes=currentNode.childNodes;

clearOption(document.forms[0].clazz);

//因为门节点的第一个子节点为name属性标签,故循环时索引从1开始

//相应的下拉框的索引就与纲节点的索引同步(不需要options[i+1]),目、科、属也是一样

for(vari=1;i

varclazzName=clazzes(i).selectNodes("name")(0).text;

document.forms[0].clazz.options[i]=ne

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值