Javascript 动态DOM元素未作为lastChild拾取

Javascript 动态DOM元素未作为lastChild拾取,javascript,ajax,dom,Javascript,Ajax,Dom,我在firefox中遇到了一个奇怪的问题(没有测试ie等,但仍然需要它在firefox中工作)。我使用ajax用包含从DB返回的信息的div填充父div。服务器端是PHP,带有一个while循环,循环遍历结果集并回显每个div 整个脚本工作正常,并使用不同数量的子节点填充父div(#ID of parent div='webses'),问题是,当我通过ajax获得一组新的div后检查最后一个子节点时,最后一个子节点被报告为之前填充的最后一个子节点 例如: “#webses”有4个childNod

我在firefox中遇到了一个奇怪的问题(没有测试ie等,但仍然需要它在firefox中工作)。我使用ajax用包含从DB返回的信息的div填充父div。服务器端是PHP,带有一个while循环,循环遍历结果集并回显每个div

整个脚本工作正常,并使用不同数量的子节点填充父div(#ID of parent div='webses'),问题是,当我通过ajax获得一组新的div后检查最后一个子节点时,最后一个子节点被报告为之前填充的最后一个子节点

例如:

“#webses”有4个childNodes(div),最后一个childNode的ID为“no4”,然后我在#webses下重新填充整个childNodes集添加一个ID为“no5”的新div,然后在重新填充div的函数末尾查询最后一个子节点的ID,最后一个子节点返回为“no4”。然后我可以运行相同的查询(一旦函数完成)来检查网站上的lastChild(通过浏览器地址栏),然后正确返回no5

下面是显示问题的代码示例(使用alert在lastChild上显示ID值):

在“#webses”下的DOM被更新为新的childNodes后,查看lastChild的查询会立即执行,我想这就是问题所在,但为什么呢

非常感谢您的帮助


Dan

AJAX意味着异步Javascript。执行警报时,PopulateParentNodeViajax()方法尚未完成,因此它将返回“old”值


如果您需要根据Ajax方法已完成的事实执行某种操作,则需要使用回调机制(仅在Ajax调用完成后调用函数X)。

它请求的信息不会超过几个字节,但我猜异步请求更新DOM的时间仍然有点太长:(正如您所建议的,我将使用回调函数,感谢您的澄清:)是的,很可能是这样。这不仅仅是DOM更新时间。这也是往返服务器所需的时间。您可以添加PopulateParentNodeViaJAX()的代码吗?这是同步调用吗?异步?
function populateWebses() {

//populates parentNode DIV 'webses' with divs populated via AJAX
populateParentNodeViaAJAX();

alert(document.getElementById("webses").lastChild.id);
}