如果我有两个应始终包含相同内部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
对象。同样,这仅在现代浏览器中有效。