J'ai un script qui charge les informations du fichier XML externe et l'insère dans la page HTML lors du clic. Voici le code de ce script:Problèmes de remplacement d'un ID statique par une 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");
}
}
}
Voici le code 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>
Cependant, cela ne fonctionne pas - après que le lien est cliqué, XML se charge (on peut voir dans Firebug), mais la deuxième variable - target
- ne peut pas faire son chemin dans la fonction state_Change
, donc aucune action réelle n'est faite. Si target
dans document.getElementById(target).innerHTML
est remplacé par un ID statique (comme list_sl
), il fonctionne, mais j'ai beaucoup de ces liens dans le HTML, pas seulement Slovénie et Horvatia, donc la variable est fortement nécessaire.
Merci pour toute aide.
J'ai supprimé, puis supprimé ce parce que j'ai fait une erreur dans la première version. Désolé, je suis encore un peu nouveau sur Stack Overflow. – Nate
Ceci est une sorte de solution très simple, a également travaillé pour moi, merci Nate – certainlyakey
Et ça fonctionne dans IE/Opera avec qui j'ai eu des problèmes avec ... – certainlyakey