- <?xml version="1.0" encoding="GB2312"?>
- <china>
- <province name="湖北省">
- <city>武汉</city>
- <city>孝感</city>
- <city>仙桃</city>
- <city>襄樊</city>
- </province>
- <province name="江苏省">
- <city>福州</city>
- <city>222</city>
- <city>4444</city>
- <city>55555</city>
- </province>
- <province name="湖南省">
- <city>sdfs</city>
- <city>sfdsdx</city>
- <city>cscsf</city>
- <city>ghghg</city>
- <city>ghghgsxsxs</city>
- </province>
- </china>
复制代码 这个是xml文件!- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>7.html</title>
-
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="this is my page">
- <meta http-equiv="content-type" content="text/html">
-
- <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
- </head>
-
- <body>
- <select name="province" id="province">
- <option value="">请选择</option>
- <option value="湖北省">湖北</option>
- <option value="江苏省">江苏</option>
- <option value="湖南省">湖南</option>
- </select>
- <select name="citys" id="citys">
- <option value="">请选择。。。</option>
- </select>
- </body>
- <script type='text/javascript'>
- var n = 0; //删除结点的标记
- window.onload = function() {
- document.getElementById("province").onchange = function() {
- //alert("xxx");
- //加载xml文件
- var flag;
- var xmlDoc = parseXML("7.xml");
- var proElements = xmlDoc.getElementsByTagName("province");
- var proElement = document.getElementById("province");
- var opNodes = proElement.childNodes;
- for(var i = 0; i < opNodes.length; i++) {
- if(opNodes[i].selected) {
- //alert(i); //3 5 7
- if(i == 3) {
- flag = 0;
- break;
- }
- else if(i == 5) {
- flag = 1;
- break;
- }
- else if(i == 7) {
- flag = 2;
- }
- else
- return false;
-
- }
- }
-
- /**** 显示湖北省的城市 *******/
- /*
- * <province name="湖北省">
- <city>武汉</city>
- <city>孝感</city>
- <city>仙桃</city>
- <city>襄樊</city>
- </province>
- */
- var city = proElements[flag].childNodes;
- var citysElement = document.getElementById("citys");
- //
- //printNodeMessage("NODE",huBei[1].firstChild);
- for(var i = 0; i < city.length; i++) {
- //1
- var opNode = document.createElement("option");
- //2
- opNode.setAttribute("value", city[i].firstChild.nodeValue);
- //3
- var textNode = document.createTextNode(city[i].firstChild.nodeValue);
- //4
- opNode.appendChild(textNode);
- //5
- citysElement.appendChild(opNode);
- }
- }
- }
- /*****/
- function printNodeMessage(nodeName,node) {
- alert(nodeName + ":" + "nodeVale:" + node.nodeValue + " nodeTyoe:" + node.nodeType + " nodeName:" + node.nodeName);
- }
- /*****/
- function parseXML(filename){
- try //Internet Explorer
- {
- xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
- }
- catch (e) {
- try //Firefox, Mozilla, Opera, etc.
- {
- xmlDoc = document.implementation.createDocument("", "", null);
- }
- catch (e) {
- alert(e.message);
- return;
- }
- }
-
- //关闭异步加载
- xmlDoc.async = false;
- //加载xml文档
- xmlDoc.load(filename);
- return xmlDoc;
- }
- </script>
- </html>
复制代码 这个是操作的代码!
我的想法是:
在js函数外面定义一个:var n = 0; //删除结点的标记
每次添加函数的时候,n++用来记录加入结点的个数。
再用selNode.removeChild(opNode[n])进行删除
可是情况不理想,不知道什么编译增加的结点的时候总是不对·不知道为什么! |
|