解答:从XML文件中删除标题信息解决了这个问题。 IE很棒!
以下代码适用于Firefox和Chrome,而不适用于IE。
我收到错误
SCRIPT5007: Unable to get value of the property 'childNodes': object is null or undefined.
line 106, character 3`
第106行是sort函数中的第一行,开头是'var aCat = a.getElementsByTagName'....
没有被排序的节点是空的,虽然在xml文件中是相同的,但是有一些空白节点(即我正在排序,没有一个是空的,但是有些人没有电话号码,或者是蜂鸣器数字等,所以其中一些是空的)
当我尝试将排序放入try-catch块时,IE只是没有读取任何节点,它们都抛出异常。 (再次,Chrome和Firefox使用try-catch块)
我很难过,有什么想法吗?
function populateSection(listType, tableID ) {
if (window.XMLHttpRequest) {/*code for IE7+, Firefox, Chrome, Opera, Safari*/ xmlhttp=new XMLHttpRequest(); }
else {/* code for IE6, IE5*/ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
var table = tableID;
var list = listType;
xmlhttp.open("GET",'contactlist.xml',false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var xmlGet = xmlDoc.getElementsByTagName("PERSON");
var x = Array.prototype.slice.call(xmlGet,0);
x.sort(function(a,b) {
var aCat = a.getElementsByTagName("LASTNAME")[0].childNodes[0].nodeValue;
var bCat = b.getElementsByTagName("LASTNAME")[0].childNodes[0].nodeValue;
if (aCat > bCat) return 1;
if (aCat < bCat) return -1;
return 0;
});
//then cycle through the array, adding table rows for each node
...}
编辑: 这是xml文件的一部分:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CONTACTLIST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PERSON>
<LASTNAME>ALLEN</LASTNAME>
<FIRSTNAME>Korrie</FIRSTNAME>
<EMAIL>redacted@evms.edu</EMAIL>
<PHONE>123456</PHONE>
<LIST>main</LIST>
</PERSON>
<PERSON>
<LASTNAME>BUESCHER</LASTNAME>
<FIRSTNAME>Chris</FIRSTNAME>
<EMAIL>redacted</EMAIL>
<LIST>main</LIST>
</PERSON>
<PERSON>
<LASTNAME>BUESCHER</LASTNAME>
<FIRSTNAME>Steve</FIRSTNAME>
<EMAIL>redacted@evms.edu</EMAIL>
<PHONE>123456</PHONE>
<LIST>main</LIST>
<LABOTHER>123456</LABOTHER>
<BEEPER>123456</BEEPER>
</PERSON>
<PERSON>
<LASTNAME>CHARTERS</LASTNAME>
<FIRSTNAME>Michelle</FIRSTNAME>
<EMAIL>redacted@evms.edu</EMAIL>
<PHONE>123456</PHONE>
<LIST>main</LIST>
</PERSON>
答案 0 :(得分:0)
由于我们没有显示您的XML,我们将很难弄清楚代码的破坏位置,但这里有一些猜测:
var x = Array.prototype.slice.call(xmlGet,0);
这在IE8中不起作用,并且在IE9中可能有问题。试试alert(x)
,看看对象是否为null
。
如果你的XML以<?xml version="1.0" encoding="utf-8" ?>
或类似的方式开头,这可能会在IE中实际中断。我不知道为什么。尝试删除它,看看它是否有效。