我试图在每次点击链接时根据其href加载不同的xml文件。 我有以下几点:
JAVASCRIPT
window.onload=function() {
loadXMLDoc("papers.xml"); // loads the default xml file so that page is not empty
}
function scanForXML(){
var extLinks=document.getElementById('results_list').getElementsByTagName('a');
for (i=0; i<extLinks.length; i++) {
extLinks[i].onclick=function getName()
{
var fileName=this.getAttribute('href');
loadXMLDoc(fileName);
return false;
}
}
}
HTML
<ol id="results_list">
<li> <a class="tooltip" href="paper2.xml"> Teaching with Tablet PC's </a></li>
<li> <a href="paper3.xml" class="tooltip"> Tablet PC’s as Instructional Tools </a></li>
</ol>
onclick事件有效,我得到了href值,但新的xmlFile没有被加载。 有什么想法吗?
ps:没有jquery plz,不能使用它。试图学习更好的基本javascript
Javascript加载代码 - 顺便说一下它在chrome和opera中不起作用 - 但是默认的xml文件会在safari中加载 代码:
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",dname,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
}
谢谢! ķ
答案 0 :(得分:0)
那是因为请求是异步的:当loadXMLDoc函数返回时没有响应。
通常的解决方案是:
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4) {
if (xmlhttp.status === 200) {
// use xmlhttp.responseXML;
}
}
}
xmlhttp.open("GET",dname,false);
xmlhttp.send();
主要区别在于您不使用loadXMLDoc函数的返回,而是要求它在获取XML后执行某些操作。
另一种解决方案是使用jquery's ajax function
强制执行同步请求 编辑:我将其标记为重复,因为这是一个经常出现的问题,但我希望这个具体的答案可以帮到你。