我是 AJAX 和 Javascript 的新手,在尝试访问 AJAX XMLHttpRequest 返回的元素时遇到问题。
场景如下:
我从另一个网站获取一个表格,并在使用 send() 方法将其打印到我的页面后,我想访问它的元素。多亏了dystroy的帖子,我才知道为什么我不能这样做。我通过 stackoverflow 和谷歌搜索,但我找不到任何有用的东西。如果我错过了我正在寻找的答案,我应该为重复的帖子道歉。
所以我的问题是:由于请求的异步性质,我不能在获取代码之后使用结果,那么在请求之后访问获取的元素的方法是什么?
感谢您的关注和帮助:)
编辑:上下文
基本上我获取一个表,将其写入指定<div>
元素(#table),然后过滤其内容,我现在的目标是将其写入另一个指定<div>
元素(#dersler),然后仅隐藏第二列以外的列。我面临的问题如上所述,我无法到达刚刚获取的表格元素。
这是代码:
function fetchPage(str)
{
if(str=="")
{
document.getElementById("table").innerHTML="";
$('#saatler').val(1); //some filtering configuration
$('#gunler').val(1); //resetting filters in other words
$('#bolumler').val(1);
return;
}
if (window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
else // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("table").innerHTML=xmlhttp.responseText;
document.getElementById("dersler").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", "fetch.php?url=http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php?fb="+str, true);
xmlhttp.send();
$('#saatler').val(1); //some filtering configuration
$('#gunler').val(1); //resetting filters in other words
$('#bolumler').val(1);
//after fetch, new filter
$("#dersler").find('table').css("background-color", "blue");
}
现在我只是想把它的背景涂成蓝色。问题是当我获取页面时,为测试创建的已经存在的表被蓝色填充,但在 500 毫秒左右后,新表被覆盖到现有示例表上,并且新表的背景没有填充蓝色.