select级联选
来源:互联网 发布:oa智能办公软件 编辑:程序博客网 时间:2024/05/03 00:55
JS中解析xml文档
//解析xml文件function loadXML(fileName){var xmlDoc=null;//判断浏览器的类型//支持IE浏览器if("ActiveXObject" in window ){//注意:判断是否是IE浏览器的条件alert("IE浏览器");var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];for(var i=0;i<xmlDomVersions.length;i++){try{xmlDoc = new ActiveXObject(xmlDomVersions[i]);break;}catch(e){}}}else if(document.implementation && document.implementation.createDocument){//支持Mozilla浏览器alert("firefox浏览器");try{/* document.implementation.createDocument('','',null); 方法的三个参数说明 * 第一个参数是包含文档所使用的命名空间URI的字符串; * 第二个参数是包含文档根元素名称的字符串; * 第三个参数是要创建的文档类型(也称为doctype) */xmlDoc = document.implementation.createDocument('','',null);}catch(e){}}else{return null;}if(xmlDoc!=null){xmlDoc.async = false;//加载 XML 文档, 获取 XML 文档对象xmlDoc.load(fileName);}return xmlDoc;}
通过JS解析XML,可以使用DOM这个强大的工具(针对HTML、XML等文档的一套API),也就是通过getElementById或getElementTagName这些方法解析XML。
XPath技术:(xml Path Language:xml路径语言),专门用于xml文件中,快速定位需要元素,无需从根元素一个一个的导航到需要的子元素。可以把它当做是类似于SQL一样的查询语言。
java中的DOM4j开源包中有selectNodes和selectSingleNode这两个方法可以根据XPath表达式获取一个或多个节点。但在js中,不同的浏览器对XPath的解析方式不一样。
在IE6.0及以后的版本中,我们可以使用同样的方法来访问任意深度的xml数据,这给xml数据解析的操作带来了便利。
在firefox等浏览器中,则使用了w3c标准的XPath处理方式,没有IE这么简单,firefox中需要建立相对于的操作对象和计算方法,才能返回对应的节点。
在不同浏览器中都可以进行XPath操作的方法
//根据指定的XPATH表达式查找满足条件的所有节点//@param xmldoc 执行查找的节点//@param sXpath xpath的表达式function selectNodes(xmldoc,sXpath){ if("ActiveXObject" in window ){ //IE浏览器 alert("IE浏览器");return xmldoc.selectNodes(sXpath); }else if(window.XPathEvaluator){ //FireFox类浏览器 alert("firefox浏览器");var xpathObj=new XPathEvaluator(); if(xpathObj){ var result=xpathObj.evaluate(sXpath,xmldoc,null,XPathResult.ORDERED_NODE_ITEARTOR_TYPE,null); var nodes=new Array(); var node; while((node = result.iterateNext())!=null) { nodes.push(node); } return nodes; }else{ return null; } }else{ return null; } }
参考:http://m.blog.csdn.net/article/details?id=17591449
JS中实现select级联选择的代码
<script type="text/javascript">window.onload = function(){//1.为province添加onchange函数document.getElementById("province").onchange = function(){var optionNodes = this.getElementsByTagName("option");alert("province下的optionNodes始终是4:"+optionNodes.length);var optionVal = null;for(var i = 0;i<optionNodes.length; i++){if(optionNodes[i].selected){optionVal = this.value;alert("选择的省:"+optionVal);}}//把 #city 节点除第一个子节点外都移除. var cityNode = document.getElementById("city");var cityOptionNodes = cityNode.getElementsByTagName("option");var optionLength = cityOptionNodes.length;alert("要移除的城市个数:"+optionLength);//这种方法清不干净,会剩余一部分,原因是:节点数是动态变化的,i=1,清除第二个节点,此时,第三个节点会变为第二个节点,//但i变为2,清除的是第三个位置上的节点,此时中间留了一个未清除。//解决方法:每次都删除第二个节点或倒序删除,先删除select下的最后一个option节点/* for(var i=1;i<optionLength;i++){//cityNode.removeChild(cityOptionNodes[i]);cityNode.removeChild(cityOptionNodes[1]);} */for(var i=optionLength-1;i>=1;i--){alert(i);alert(cityOptionNodes[i].firstChild.nodeValue);cityNode.removeChild(cityOptionNodes[i]);}if(optionVal == ""){return;}//2.加载 cities.xml 文件. 得到代表给文档的 document 对象var xmlDoc = loadXML("cities.xml");alert("xmlDoc");//3.在 cities.xml 文档中查找和选择的省匹配的 province 节点.//直接使用 XPath 技术查找 XML 文档中匹配的节点. var provinceElem = selectNodes(xmlDoc,"//province[@name='"+optionVal+"']");alert("provinceElem");//4.再得到 province 节点的所有的 city 子节点var cityNodes = provinceElem[0].getElementsByTagName("city");alert("city:"+cityNodes.length);//5.遍历 city 子节点, 得到每一个 city 子节点的文本值for(var i=0;i<cityNodes.length;i++){//6.利用得到的文本值创建 option 节点var cityText = cityNodes[i].firstChild.nodeValue;var optionNode = document.createElement("option");var cityTextNode = document.createTextNode(cityText);optionNode.appendChild(cityTextNode);//7.并把 6 创建的 option 节点添加为 #city 的子节点.cityNode.appendChild(optionNode);}}}}
0 0
- select级联选
- 级联select
- select 级联
- select下拉列表级联
- select日期级联
- select下拉列表级联
- select下拉列表级联
- select下拉级联
- js 级联select
- <z:select>级联操作
- rails select级联
- Select表单控件的多选级联技术
- 关于SELECT的无限级联
- 关于select的无限级联
- js操作select标签级联
- select元素+jQuery 级联操作
- 基于JQuery的Select级联
- java页面select级联问题
- C Primer Plus7-5
- C Primer Plus7-6
- caffe训练好模型的特征提取(fc7,最后一层全连接层)
- C Primer Plus7-9
- Standalone Toolchain
- select级联选
- 使用axis技术创建webservice(服务端+客户端)
- SpringMVC 中Controller之间的 forward 和 redirect
- JNI简单用法
- log4j.properties配置详解
- 一月学习。
- UNITY5.2如何使用VS调试
- Spring MVC PUT 表单参数获取
- hdu 2059 龟兔赛跑(dp)