<html>
<head><title></title>
<style>
body{font-size:12px}
td{font-size:12px}
</style>
<script type="text/javascript">
window.onload=loadsection
function createXmlDom(){
if(window.ActiveXObject){
var xmldoc=new ActiveXObject("MSXML2.DOMDocument.4.0")
return xmldoc
}
else if(document.implementation && document.implementation.createDocument){
var xmldoc=document.implementation.createDocument("","",null)
return xmldoc
}
else{throw new Error("你的浏览器不支持")}
}
function loadsection(){
var xml=createXmlDom()
xml.load("menu.xml")
var arr=xml.getElementsByTagName("province")
alert(arr.length)
for(var i=0;i<arr.length;i++){
document.myform.province.options[i]=new Option(arr[i].attributes[1].nodeValue,arr[i].attributes[1].nodeValue)
}
for(var j=0;j<arr[0].childNodes.length;j++){
document.myform.city.options[j]=new Option(arr[0].childNodes[j].firstChild.nodeValue,arr[0].childNodes[j].firstChild.nodeValue)
}
}
</script>
</head>
<body>
<form name="myform">
<table style="border:1 solid;"><tr><td width="120px">
省份:<select name="province" onchange="setsection()">
</select>
</td><td width="120px">
城市:<select name="city">
</select>
</td></tr></table>
</form>
</body>
以上代码在IE中可以正常运行,但是在FF中不能起作用,arr[0]的长度为何会是0,IE中能返回正解的长度,请达人帮忙!
<head><title></title>
<style>
body{font-size:12px}
td{font-size:12px}
</style>
<script type="text/javascript">
window.onload=loadsection
function createXmlDom(){
if(window.ActiveXObject){
var xmldoc=new ActiveXObject("MSXML2.DOMDocument.4.0")
return xmldoc
}
else if(document.implementation && document.implementation.createDocument){
var xmldoc=document.implementation.createDocument("","",null)
return xmldoc
}
else{throw new Error("你的浏览器不支持")}
}
function loadsection(){
var xml=createXmlDom()
xml.load("menu.xml")
var arr=xml.getElementsByTagName("province")
alert(arr.length)
for(var i=0;i<arr.length;i++){
document.myform.province.options[i]=new Option(arr[i].attributes[1].nodeValue,arr[i].attributes[1].nodeValue)
}
for(var j=0;j<arr[0].childNodes.length;j++){
document.myform.city.options[j]=new Option(arr[0].childNodes[j].firstChild.nodeValue,arr[0].childNodes[j].firstChild.nodeValue)
}
}
</script>
</head>
<body>
<form name="myform">
<table style="border:1 solid;"><tr><td width="120px">
省份:<select name="province" onchange="setsection()">
</select>
</td><td width="120px">
城市:<select name="city">
</select>
</td></tr></table>
</form>
</body>
以上代码在IE中可以正常运行,但是在FF中不能起作用,arr[0]的长度为何会是0,IE中能返回正解的长度,请达人帮忙!
<configure>
<province id="p0" name="广东">
<city>深圳</city>
<city>东莞</city>
<city>中山</city>
<city>惠州</city>
<city>珠海</city>
<city>梅州</city>
<city>广州</city>
<city>韶关</city>
<city>佛山</city>
<city>汕头</city>
</province>
<province id="p1" name="湖北">
<city>武汉</city>
<city>荆州</city>
<city>随州</city>
<city>襄樊</city>
<city>宜昌</city>
<city>十堰</city>
<city>恩施</city>
<city>仙桃</city>
<city>鄂州</city>
<city>孝感</city>
</province>
<province id="p2" name="湖南">
<city>长沙</city>
<city>张家界</city>
<city>株州</city>
<city>邵阳</city>
<city>常德</city>
<city>郴州</city>
<city>衡阳</city>
<city>岳阳</city>
<city>永州</city>
<city>湘潭</city>
</province>
</configure>
var xmldoc=document.implementation.createDocument("","",null)
return xmldoc
}==>else if(document.implementation && document.implementation.createDocument){
var xmldoc=document.implementation.createDocument("","",null)
xmldoc.async = false;
return xmldoc
}
encoding="utf-8"
没有问题~~
当然前提是要关掉异步
或者说你的路径名有中文吗
没有中文路径,直接在根目录中
var arr=xml.getElementsByTagName("province")
alert(arr.length)
你在load menu.xml之后 你把xml打印出来看下!~~~有的话你尝试下xml.documentElement.getE.....还不行的话 你去下个FF小插件,firebug帮你找出问题!!!
加上就提示arr[0].childNodes[j].firstChild is null
理由很简单arr[0] is undefined 说明没有arr是空,所以不存在arr[0]arr[0].childNodes[j].firstChild is null是说明arr[0]存在,甚至childNodes[j]都存在。只是firstChild没有~