获取AJAX的HTML中的元素无法通过getElementbyID找到
这是因为它尚未初始化。如果我放入alert(),它允许浏览器被释放并初始化元素。那么问题是,我如何强制它不使用警告框来初始化元素?获取AJAX的HTML中的元素无法通过getElementbyID找到
这里的相关代码...
$().ready(function() { AJAX_LoadResponseIntoElement ("mybody", "skin1.txt"); AJAX_LoadResponseIntoElement ("contentdiv", "index.txt"); initPage(); });
AJAX_LoadResponseIntoElement(ID,文件),只需取 “文件” 有一个XMLHttpRequest,并将其装入ID的innerHTML。
initPage()的作品,直到它调用setContentHeight(),其工作直到这一点:
if (DOMheight > y_lbound) { document.getElementById('containerdiv').style.height = (DOMheight+container_ymod) + 'px'; }
如果我把alert(document.getElementById('containerdiv'));
这条线之前,它说,它是NULL,即使“ containerdiv“元素应该首先被加载到AJAX_LoadResponseIntoElement。
如果我在此行之前放TWOalert(document.getElementById('containerdiv'));
的副本,第一个表示NULL,第二个表示“[Object HTMLDivElement]”。
显然,这只是“containerdiv”未初始化的问题。
因此,问题是如何在XMLHTTPRequest获取这些元素后,如何强制这些元素的初始化,而不使用alert()?
看来AJAX_LoadResponseIntoElement()
是异步的,因为它在内部使用XMLHTTPRequest
。为您解决问题的一种方法是修改功能,因此它需要一个回调函数的参数,当请求成功调用它:
function AJAX_LoadResponseIntoElement(elementId, fileName, callback)
{
// Issue XMLHTTPRequest and call 'callback' on success.
}
然后用修改后的功能是这样的:
$(document).ready(function() {
AJAX_LoadResponseIntoElement("mybody", "skin1.txt", function() {
AJAX_LoadResponseIntoElement("contentdiv", "index.txt", initPage);
});
});
那花我花了一个小时才弄清楚该怎么做,但我得到了它的工作。如果你原谅我,我会在同一时间去哭,庆祝和抽烟......我即将放弃! – TimFoolery 2011-01-28 12:02:40