我正在使用这段代码通过 AJAX 请求更新一个 div
var xmlhttp;
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("some_id").innerHTML += xmlhttp.responseText;
}
}
xmlhttp.open("GET", "http://example.com/");
xmlhttp.setRequestHeader('Content-Type', 'utf8');
xmlhttp.send();
一切都运作正常,问题在于当id为some_id
的div
内有很多内容时,我会看到内容消失,然后在执行AJAX请求后更新后再次出现。
我认为这是因为
document.getElementById("some_id").innerHTML += xmlhttp.responseText;
删除并用先前的innerHTML加上新内容替换div,导致“先前的内容→空白→更新的内容”行为。
是否有一种方法可以将新内容追加到div中,而不是用新内容完全替换其整个内容?
innerHTML
,因为它不会删除事件处理程序。请改用jQuery的.html
选项,否则您将遇到大量的内存泄漏问题(是的,在JavaScript中确实存在这种情况)。 - Dave