Ich habe ein Skript, das Informationen aus externen XML-Datei lädt und fügt sie in die HTML-Seite beim Klicken ein. Hier ist der Code dieses Skripts:Probleme mit dem Ersetzen einer statischen ID mit Variable
var xmlhttp;
function loadXMLDoc(url,target) {
xmlhttp = null;
if (window.XMLHttpRequest) { // code for all new browsers
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // code for IE5 and IE6
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp != null) {
xmlhttp.onreadystatechange = state_Change;
xmlhttp.open("GET", url, true);
xmlhttp.send(null);
}
else {
alert("Your browser does not support XMLHTTP.");
}
}
function state_Change() {
if (xmlhttp.readyState == 4) { // 4 = "loaded"
if (xmlhttp.status == 200) { // 200 = OK
var markers = xmlhttp.responseXML.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getElementsByTagName("name")[0].firstChild.nodeValue;
//etc...
document.getElementById(target).innerHTML += '<li>' + name + '</li>\n';
}
}
else {
alert("Problem retrieving XML data");
}
}
}
Hier ist der HTML:
<ul id="list_puncts">
<li><a href="javascript:;" onclick="loadXMLDoc('./content/geo_points/slovenia.xml','list_sl')">Republika Slovenija (RS)</a>
<ul id="list_sl">
<!--here should be some info from XML file-->
</ul></li>
<li><a href="javascript:;" onclick="loadXMLDoc('./content/geo_points/horvatia.xml','list_hr')">Republika Hrvatska (RH)</a>
<ul id="list_hr">
<!--here should be some info from XML file-->
</ul></li>
</ul>
Aber es funktioniert nicht - nachdem der Link angeklickt wird, XML geladen wird (es in Firebug gesehen werden kann), aber die zweite Variable - target
- kann nicht in die state_Change
-Funktion gelangen, so dass keine echte Aktion ausgeführt wird. Wenn target
in document.getElementById(target).innerHTML
durch eine statische ID (wie list_sl
) ersetzt wird, funktioniert es, aber ich habe viele dieser Links im HTML, nicht nur Slowenien und Horvatia, so dass die Variable dringend benötigt wird.
Danke für jede Hilfe.
Ich löschte, und dann löschte dies, weil ich einen Fehler in der ersten Version gemacht habe. Sorry, ich bin immer noch etwas neu in Stack Overflow. – Nate
Dies ist eine Art sehr einfache Lösung, auch für mich gearbeitet, danke Nate – certainlyakey
Und es funktioniert in IE/Opera, die ich hatte Probleme mit ... – certainlyakey