在保持 CSS 的同时更改 innerHTMl

Changing innerHTMl while keeping CSS

我在div中有一段:

HTML:

<div id="header"><p>Header</p></div>

CSS:

#header p {
color: darkgray;
font-size: 15px;

点击按钮时,内部HTML变化:

Javascript:

var header = document.getElementById('header')
header.innerHTML = "Changed"

但是,改变了内部HTML之后,文本returns又恢复了原来的属性。我希望文本保持其颜色 (darkgray) 和字体大小 (15px)。

这是一个JS Fiddle

它不起作用,因为您随后要删除嵌套的 p 元素(这是应用 CSS 的元素)。

您可以 select 第一个子节点然后更改 textContent property:

Updated Example

var header = document.getElementById('header');
header.childNodes[0].textContent = "Changed";

访问 childNodes 属性 的好处是它将 select 一个子元素或一个文本节点。这意味着即使 #header 元素不包含后代 p 元素,文本也会更改。

换句话说,它将替换 <div id="header"><p>Header</p></div><div id="header">Header</div> 中的文本。