外部XMLファイルから情報をロードし、クリックするとHTMLページに挿入するスクリプトがあります。このスクリプトのコードは次のとおりです。
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");
}
}
}
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>
ただし、リンクがクリックされた後、XMLがロードされますが(Firebugで確認できます)、2番目の変数は関数にtarget
組み込まれないstate_Change
ため、実際のアクションは実行されません。target
in
document.getElementById(target).innerHTML
が(のような)静的IDに置き換えられた場合list_sl
、それは機能しますが、スロベニアとホルバティアだけでなく、HTMLにこれらのリンクの多くがあるため、変数が強く必要になります。
助けてくれてありがとう。