我有一个AJAX请求,它返回一大块HTML作为插入div的响应。如何使用JavaScript从该AJAX响应HTML中获取DOM元素?我在返回的HTML响应div的末尾有JavaScript,但getElementById返回null,显然是因为尚未创建DOM,我不能像普通网页那样使用window.onload。见下面的例子。这必须是JavaScript - 没有库。
<div class="page-content extractAjaxContent" id="tableContent_AJAX">
<div id="name">Biff</div>
<html:form action="/variableCostStatusPost" method="post">
....some JSP to produce HTML
</html:form>
<script>console.log("Name is " + document.getElementById('name'));</script>
</div>
答案 0 :(得分:1)
在这里演示:http://jsfiddle.net/wxCJL/1/
在此示例中,setTimeout
调用模拟了ajax请求的success
函数,变量responseData
是服务器返回的HTML的占位符。
<强>脚本强>
function onLoad() {
var holder = document.getElementById('content');
//simulate ajax call
setTimeout(function() {
// this code will be in the success handler
var responseData = "<div><strong>Here I Come</strong> to save the day!</div>";
holder.innerHTML = responseData;
}, 2500);
}
<强> HTML 强>
<h1>Hello</h1>
<div>
Where is the content?
<span id='content'></span>
</div>
答案 1 :(得分:0)
您有两种选择,具体取决于您需要支持的浏览器:
如果您需要支持所有浏览器,请将您的console.log
代码放入ajax响应后调用的“success”函数中。这将确保它仅在ajax更新div之后运行。
如果您只需要支持与HTML5兼容的浏览器,请在“name”div上收听DOMNodeInserted
事件,而不是通过innerHTML
进行更改,请创建并附加html代码对象