Javascript,从"<body>"中删除类的最快方法

Ale*_*lex 19 html javascript css

我有一个body元素,我在其上添加了几个类.我希望no-javascript在浏览器读取之后从中删除该类.

   <body class="foo boo no-javascript bla">
   <script type="javascript">
      // remove no-javascript class here
   </script>
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 54

好吧,既然多余的空间无关紧要,我会说:

document.body.className = document.body.className.replace("no-javascript","");
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下.

  • 例如,当你有另一个名为"piano-javascript"的课程时会倒下. (4认同)

小智 20

document.querySelector('body').classList.remove('no-javascript');
Run Code Online (Sandbox Code Playgroud)


Ste*_*ler 17

这没有本机javascript函数,但我总是使用以下代码(借用/启发此snipplr

function removeClass(ele,cls) {
   var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
   ele.className = ele.className.replace(reg,' ');
}

removeClass(document.getElementById("body"), "no-javascript")
Run Code Online (Sandbox Code Playgroud)

正则表达式比replace其他答案中提到的函数做得更好,因为它检查是否存在精确的className,而不是更多或更少.这个版本名为"piano-javascript"的类将保持不变.


对于现代浏览器(包括IE10及更高版本),您还可以使用:

document.querySelector('body').classList.remove('no-javascript');
Run Code Online (Sandbox Code Playgroud)


sje*_*397 6

document.body.className = '';
Run Code Online (Sandbox Code Playgroud)

  • 这将删除*所有*类,而不仅仅是“no-javascript” (3认同)
  • @El Ronnoco:我知道。但正如所要求的,它确实删除了该类。我知道我说得太直白了,但这*是*最快的:) (2认同)