setTimeout 函数后页面刷新并删除 body 属性

Page refreshes after setTimeout function and removes body attribute

下面的代码设置了 2s 的超时时间来调用 document.write 函数。 一旦 document.write() 被调用,它就会自动刷新(正如我所想的那样)页面。不仅如此,它还删除了 bgcolor 和 body 的颜色 属性!

// JS
let name = prompt('Enter username: ', 'Captain Anonymous');

function sayHello() {
    document.write('Hello ' + name + '!');
}
setTimeout(sayHello, 2000);

// HTML
<html>
<head><title>Page Title</title></head>
<body bgcolor='blue' color='white'></body>
</html>

我希望这段代码只是简单地在文档中写入消息。我怎样才能做到这一点?

document.write 仅在文档​​加载时将文本插入到文档中。页面加载后,它将 overwrite your page。当调用 setTimeout 时,页面已经加载。

您可能想要做的是在您的页面中为您的消息放置一个位置。

试试这个。在页面正文中添加 div 标签。

<div id="mytext">

然后把你的 sayHello 函数改成这个

function sayHello() {
    document.getElementById("mytext").innerText = 'Hello ' + name + '!';
}