如果我有两个应始终包含相同内部HTML文本的HTML元素,那么同时更新它们的最优雅的方法是什么?

例如:

<head>
    <title id="pageTitle">My Application</title>
</head>
<body>
    <h1 id="screenTitle">My Application</h1>
</body>

每当JavaScript函数更改其中之一时,我希望screenTitle和pageTitle的innerHTML保持相同。

我知道我可以遍历pageTitle和screenTitle元素,每当我更改字符串“My Application”时都更新它们,但是还有一种更优雅的方法吗?

最佳答案

document.title.innerHTML在IE中是只读的。这应该是跨浏览器的方法:

document.getElementById('screenTitle').innerHTML = document.title = 'My Application';

可以使用类(class)变量来代替文字值。

如果您确实需要“优雅”的东西(===异国情调),则可以使用setter:
var page = {
    set title(text) {
        document.getElementById('screenTitle').innerHTML = document.title = text;
    }
};

每当您需要更改标题时,只需进行设置即可:page.title = newTitle;。唯一需要注意的是,您可以从当前作用域引用page对象。同样,这仅在现代浏览器中有效。

09-11 19:55