Dom和xml的二級聯動

Dom和xml的二級聯動:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>example01.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; charset=GBK">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

</head>

<body>

<div align="center">

<div id="data">

<select id="province">

<option>請選擇省</option>

</select>

<select id="city">

<option>請選擇市</option>

</select>

<select id="country">

<option>請選擇市</option>

</select>

</div>

</div>

</body>

</html>

<script type="text/javascript">

window.onload = function(){

var xmlDoc = parseXml("/day01/cities.xml");

//獲取省 xml

var provinceNodes = xmlDoc.getElementsByTagName("province");

//添加省的節點

var provinceNode = document.getElementById("province");

//獲取市的節點

var citiesHtmlNode = document.getElementById("city");

// 獲取縣的節點

//var countryNode = document.getElemnetById("country");

for (var i = 0; i < provinceNodes.length; i++) {

//創建option html

var optionNode = document.createElement("option");

//獲取省的名稱

var value = provinceNodes[i].getAttribute("name");

//爲option添加文本節點 值爲省的name屬性值

optionNode.appendChild(document.createTextNode(value));

optionNode.setAttribute("value", value); //爲添加的option設置值

//添加到節點中

provinceNode.appendChild(optionNode);

}

provinceNode.onchange = function(){

//清空原有的的節點

//獲取清空的select裏面的所有的option對象

var cityHtmlOptionNodes = citiesHtmlNode.getElementsByTagName("option");//獲取的是所有的option

//獲取長度

var len = cityHtmlOptionNodes.length;

for (var m = 0; m < len; m++) {

//看是否有第一個對象,【1】代表的第二個對象,如果不爲空

if (cityHtmlOptionNodes[1]) {

//始終移除第二個對象

citiesHtmlNode.remove(cityHtmlOptionNodes[1]);

}

}

//讀取省的名稱

for (var i = 0; i < provinceNodes.length; i++) {

//判斷點擊的是否是value

if (this.value == provinceNodes[i].getAttribute("name")) {

//通過省節點來找到city節點對象

var citiesNode = provinceNodes[i].getElementsByTagName("city");

//alert(citiesNode);

//遍歷city到city的select中

for (var j = 0; j < citiesNode.length; j++) {

var cityOptionNode = document.createElement("option");

//爲創建的option對象添加文本 citieNodes[j].firstChild.value

cityOptionNode.appendChild(document.createTextNode(citiesNode[j].firstChild.nodeValue));

//把創建的對象添加到city中

citiesHtmlNode.appendChild(cityOptionNode);

}

}

}

}

}

//用js解析xml文件

/*

* html文檔 是document文檔對象 節點

* xml 文件 需要創建

* 根據不同的瀏覽器有不同的創建方式

* 在IE中需要一個空間名稱來創建

* @param {Object} id

*/

//解析xml文檔

function parseXml(filename){

var xmlDoc;

try {

//IE瀏覽器

xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

}

catch (e) {

try {

//非IE瀏覽器

xmlDoc = document.implementation.createDocument("", "", null);

}

catch (ex) {

alert("你使用的是不是瀏覽器呀!");

}

}

//解析的時候是異步還是同步,設置爲false,是關閉異步加載,這樣確保在文檔完全加載之前不會繼續腳本的執行

xmlDoc.async = false;

xmlDoc.load(filename);

return xmlDoc;

}

</script>

用到的xml文件爲:

<?xml version="1.0" encoding="GBK"?>

<china>

<province name="河北">

<city name="石家莊">

</city>

<city name="廊坊">

</city>

<city name="保定">

</city>

<city name="邢臺">

</city>

<city name="滄州">

</city>

<city name="衡水">

</city>

</province>

<province name="北京">

<city>大興</city>

<city>房山</city>

<city>昌平</city>

<city>朝陽</city>

<city>海淀</city>

</province>

<province name="河南">

<city>開封</city>

<city>商丘</city>

<city>駐馬店</city>

<city>平頂山</city>

<city>洛陽</city>

<city>鄭州</city>

</province>

<province name="安徽">

<city>阜陽</city>

<city>亳州</city>

<city>合肥</city>

</province>

</china>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章