我有一个div,其内容是My Home&管理
<div id="abc"> My Home & Administration></div>
在脚本中,我需要将此div的内容复制到我的页面标题中。目前我正在使用innerHTML属性来编码值。
<script type="text/javascript>
var id = document.getElementById("abc");
document.title = id.innerHTML;
</script>
标题显示为我的家&amp;放大器;施用 (注意:忽略&amp;和amp;之间的空格)
是否有任何替代方式显示标题? 我不能使用JQuery或任何框架,除了简单的Javascript
另请注意,这不是URL编码,而是将字符转换为HTML实体。
答案 0 :(得分:3)
您可以使用.textContent
代替.innerHTML
。
.innerHTML
实际上不是DOM规范的一部分。大多数浏览器都将其作为非标准功能提供。 .innerHTML
有几个问题。
由于您对节点的实际文本值感兴趣,因此可以使用.textContent
。
知道div
abc 实际上有一个节点TextNode
,它可以保存该值,这可能很有用。 div
本身并未实际保留该值。如果你要遍历DOM,你会看到这个文本节点。
如果你的HTML是:
<div id="abc">Foo <strong>bar</strong> baz</div>
您的结构将是:
`div`:abc
TextNode Foo
`strong`
TextNode bar
TextNode baz
在这种情况下,abc.textContent
会返回"Foo bar baz"
,因此会忽略strong
代码。
相比之下,.innerHTML
将返回"Foo <strong>bar</strong> baz"
同样适用于:
<div id="abc">Foo&Bar</div>
.textContent
将为"Foo&Bar"
,.innerHTML
将为"Foo&Bar"