为什么不能在JS函数中使用CSS类来应用样式?

jka*_*lly 2 javascript css

在此代码中,函数sayHi()不会使用样式编写文本.为什么?如何将CSS类应用于函数中的document.write?

.class1 {
  color: red;
  font-size: 400%;
}
Run Code Online (Sandbox Code Playgroud)
<script language="javascript" type="text/javascript">
  document.write("<h1 class=class1>Hello World</h1>");

  function sayHi() {
    document.write("<h1 class=class1>Goodbye!</h1>");
  }
</script>

<button onclick="sayHi()">Click me</button>
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 6

document.writedocument.wrong- 无论何时在页面加载后使用它,它都会用新的HTML字符串替换整个页面.这绝不是一个好主意.在这种情况下,它正在替换包含CSS的页面,因此没有style适用于class1.

使用适当的DOM方法代替:

  function sayHi() {
    const h1 = document.body.appendChild(document.createElement('h1'));
    h1.className = 'class1';
    h1.textContent = 'Goodbye!';
  }
Run Code Online (Sandbox Code Playgroud)
.class1 {
  color: red;
  font-size: 400%;
}
Run Code Online (Sandbox Code Playgroud)
<h1 class=class1>Hello World</h1>
<button onclick="sayHi()">Click me</button>
Run Code Online (Sandbox Code Playgroud)

或者,如果你想第一(但删除现有的元素没有style),明确的document.body:

  function sayHi() {
    document.body.textContent = '';
    const h1 = document.body.appendChild(document.createElement('h1'));
    h1.className = 'class1';
    h1.textContent = 'Goodbye!';
  }
Run Code Online (Sandbox Code Playgroud)
.class1 {
  color: red;
  font-size: 400%;
}
Run Code Online (Sandbox Code Playgroud)
<h1 class=class1>Hello World</h1>
<button onclick="sayHi()">Click me</button>
Run Code Online (Sandbox Code Playgroud)

  • `document.write是document.wrong` - 我从现在开始使用它:p (2认同)