4

我试图在 2 秒(2000 毫秒)后动态更改页面标题。

这是我尝试过的代码:

<!DOCTYPE HTML>
<html>
<head>
<title>Before</title>
</head>
<body onload="updateTitle">
<script>
var title = document.getElementsByTagName('title');
function updateTitle() {
//Here is some kind of delay (of 2 seconds). I have tried setTimeout(), setInterval() and delay()
title.innerHTML = "After";
</script>
Dummy Content for Body
</body>
</html>

如何修改它,以便 2 秒后页面标题发生变化?

4

1 回答 1

6

要更改标题,您应该使用window.title

window.title = 'After';

如果您绝对必须使用document.getElementsByTagName,请注意它返回一个元素数组,您需要使用第一个元素。IE

document.getElementsByTagName('title')[0].innerHTML = 'After';

当然,如果页面没有<title>元素,上面会报错。第一个 ( window.alert) 在任何一种情况下都可以使用。


延迟

为了引入延迟,您可以使用setTimeout(正如您已经完成的那样)

<script>
function updateTitle() {
    setTimeout(function() {
        window.title = 'After';
    }, 2000);
}
</script>

整页工作代码

请注意,包含的块updateTitle()已移至 . 问题在于,当浏览器尝试将其绑定到(解析页面时)时,该函数updateTitle()尚未定义onload——因为它后来在正文中定义。

<!DOCTYPE html>
<html>
<head>
<title>Before</title>
<script>
function updateTitle() {
    setTimeout(function() {
        document.getElementsByTagName('title')[0].innerHTML = 'After';
    }, 2000);
}
</script>
</head>
<body onload="updateTitle()">
Dummy Content for Body
</body>
</html>
于 2013-05-18T16:19:32.577 回答