gpt4 book ai didi

javascript - Document.write 只覆盖页面一次

转载 作者:行者123 更新时间:2023-11-30 12:33:58 29 4
gpt4 key购买 nike

我一直在使用 document.write() 将现有的 html 替换为 AJAX 加载的一些。
如果每次正常加载使用一次它工作正常(正常我的意思是没有 AJAX),但如果使用多次,它写入而不替换现有内容

换句话说,第一次在 page1 上调用 document.write() 时,page1 被覆盖(如预期的那样),但在下次调用时,新内容被附加 到第 1 页。为什么?

这里有一些代码可以重现我的问题:

全局 JavaScript(在所有页面上):

function loadXMLDoc(name) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.addEventListener("load", transferComplete, false);
xmlhttp.open("GET", name, true);
xmlhttp.send();
function transferComplete() {
document.write(xmlhttp.responseText);
history.replaceState(null, null, name);
}
}

第一页:

<a href="#" onclick="loadXMLDoc('page2.html');">p1</a>

第二页:

<a href="#" onclick="loadXMLDoc('page3.html');">p1</a>

第三页:

<a href="#" onclick="loadXMLDoc('page1.html');">p1</a>

最佳答案

这是预期的行为。 write 方法用于在渲染时将内容写入页面。

它仅在页面完成后使用时才替换页面,因为第一次使用它时,它会隐式执行 document.open() 以启动新的流来写入到。

要正确使用它来替换页面,先调用document.open,然后使用document.write一次或多次写入内容,然后调用document.close 告诉浏览器新页面已完成。

关于javascript - Document.write 只覆盖页面一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700756/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com