js实现xml的多级联动下拉框
另外发现有人说用树的方式会更灵活和方便,如图
?
?
花了半天时间实现一个多级联动下拉框,目的是对某一植物进行“门纲目科属”的归类。使用的技术是javascript+xml,之所以不用数据库,一来这
方面的数据虽然量大但都是固定不变的,二来不希望加重服务器的负担,第三是因为这种多级从属关系的数据不太适合放在数据库里。
这是大概的思路:
1、读取xml文件
2、当一个下拉框选中某选项时,根据该选项,当前节点指向下一层,进入下一层下拉框的设置
3、取消当前下拉框的禁用,禁用下一层的下拉框
4、清空当前下拉框的选项
5、根据当前节点读取xml的数据,设置下拉框选项
6、返回步骤2
代码:
JavaScript
-
var
?xmlDoc;????
-
var
?browserType;??
-
var
?currentNode;
??
-
??
-
setBrowserType();??
-
loadXml("classify.xml"
);??
-
??
-
??
-
??
-
??
-
function
?setPhylum(){??
-
????currentNode=xmlDoc.documentElement;??
-
????var
?phylums=xmlDoc.documentElement.childNodes;??
-
????var
?phylumName;??
-
????if
(browserType==
"IE"
){??
-
????????for
(
var
?i=0;i<phylums.length;i++){??
-
????????????
??
-
????????????phylumName=phylums[i].selectNodes("name"
)[0].text;??
-
????????????document.forms[0].phylum.options[i+1]=new
?Option(phylumName,phylumName);??
-
????????}??
-
????}??
-
????else
{
??
-
????????
??
-
????????for
(
var
?i=1;i<phylums.length;i=i+2){??
-
????????????phylumName=phylums[i].childNodes[1].textContent;??
-
????????????document.forms[0].phylum.options[(i+1)/2]=new
?Option(phylumName,phylumName);??
-
????????}??
-
????????document.forms[0].clazz.disabled="disabled"
;??
-
????????document.forms[0].order.disabled="disabled"
;??
-
????????document.forms[0].family.disabled="disabled"
;??
-
????????document.forms[0].genus.disabled="disabled"
;??
-
????}??
-
}??
-
??
-
??
-
function
?setClazz(selectedIndex){??
-
????
??