Errore Javascript esclusivo di Internet Explorer. Imansible ottenere il valore della proprietà “childNodes”

RISPOSTA: la rimozione delle informazioni dell’intestazione dal file XML ha risolto il problema. IE è fantastico!

Il seguente codice funziona in Firefox e Chrome, non in IE.

Ottengo l’errore

SCRIPT5007: Unable to get value of the property 'childNodes': object is null or undefined. line 106, character 3` 

La riga 106 è la prima riga all’interno della funzione di ordinamento, quella che inizia ‘var aCat = a.getElementsByTagName’ ….

Nessuno dei nodes ordinati è vuoto, anche se all’interno del file xml ci sono alcuni nodes vuoti (ad esempio, l’ordinamento è in corso, nessuno dei quali è vuoto, ma alcune persone non hanno il numero di telefono, o numeri di segnale acustico, ecc. . alcuni di questi sono vuoti)

Quando ho provato a mettere l’ordinamento in un blocco try-catch, IE non ha letto nessuno dei nodes, tutti hanno lanciato un’eccezione. (ancora, Chrome e Firefox hanno funzionato con il blocco try-catch)

Sono perplesso, qualche idea?

 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 ...} 

EDIT: Ecco una parte del file xml:

    ALLEN Korrie [email protected] 123456 main   BUESCHER Chris redacted main   BUESCHER Steve [email protected] 123456 main 123456 123456   CHARTERS Michelle [email protected] 123456 main  

Dato che non viene mostrato il tuo XML, avremo difficoltà a capire dove il codice si sta rompendo, ma qui ci sono alcune ipotesi:

var x = Array.prototype.slice.call(xmlGet,0); Questo non funziona in IE8, e potrebbe essere bacato in IE9. Prova alert(x) e verifica se l’object è null .

Se il tuo XML inizia con O simili, questo può effettivamente andare in IE. Non so perché. Prova a rimuoverlo e vedere se funziona.