Hallo,
nummer = FrageTab.documentElement.childNodes(start).childNodes(0) die Fehlermeldung - FrageTab.documentElement ist null oder kein Object -
Ignoriere ich diese Fehlermeldung so liesst das System wenige Codezeilen später in DIV ID="OutAntwort" mit derselben Variablen FrageTab die Antwort aus der xml-Datei. Dies kann ich mir nicht erklären. Die Fehlermeldung kann ich auch dadurch verhindern, dass ich vor dem beanstandeten Befehl ein alert(FrageTab) einfüge. nach der Bestätigung im alert werden die folgenden Befehle ohne Beanstandungen ausgeführt.
Ich habe den Codewust nicht weiter analysiert, aber prinzipiell solltest du darauf achten, dass du auf eine XML Data Island erst zugreifst, wenn du dir sicher sein kannst, dass die Datei vollständig vom Server zum Client übertragen wurde.
Da du mehrere große XML-Dateien einbindest, dauert es natürlich seine Zeit, bis die zum Client übertragen wurden. Wenn du direkt nach der Einbindung der XML-Datei darauf zugreifen willst, geht das natürlich nicht:
<html>
<head>
<script type="text/javascript">
[code lang=javascript]window.onload = function () {
alert(xmlIsland.documentElement); // [object]
};
</script>
</head>
<body>
<xml id="data" src="data.xml"></xml>
<script type="text/javascript">
var xmlIsland = document.getElementById("data");
alert(xmlIsland.documentElement); // null
</script>
</body>
</html>[/code]
Erst beim onload kannst du dir sicher sein, dass alle Daten geladen wurden. Du müsstest also mit einer Bitte-Warten-Meldung starten, die beim onload ausgeblendet wird. Erst dann könnte deine Logik auf die Daten zugreifen. Alternativ gibt es den Handler ondataavailable, der allerdings jeweils nur auf ein xml-Element angewendet werden kann:
<xml id="data" src="data.xml" ondataavailable="alert('Fertig')"></xml>
Heutzutage nutzt man sowieso XMLHttpRequest für diese Zwecke. Über den readyState-Event lässt sich der Ladestatus einer XML-Ressource direkt überwachen. Außerdem besteht keine Notwendigkeit, das ganze auf IE zu fixieren.
Mathias