使用Javascript将类添加到<html>?

Bra*_*dev 79 html javascript

如何<html>使用Javascript 向根元素添加类?

Kev*_*her 95

像这样:

var root = document.getElementsByTagName( 'html' )[0]; // '0' to assign the first (and only `HTML` tag)

root.setAttribute( 'class', 'myCssClass' );
Run Code Online (Sandbox Code Playgroud)

或者使用它作为"setter"行来保留以前应用的任何类:(感谢@ ama2)

root.className += ' myCssClass';
Run Code Online (Sandbox Code Playgroud)

或者,根据所需的浏览器支持,您可以使用以下classList.add()方法:

root.classList.add('myCssClass');
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/API/Element/classList http://caniuse.com/#feat=classlist

更新:

用于引用HTML元素的更优雅的解决方案可能是:

var root = document.documentElement;
root.className += ' myCssClass';
// ... or:
//  root.classList.add('myCssClass');
//
Run Code Online (Sandbox Code Playgroud)

  • 在回复之前,我在三种不同的浏览器中尝试过,所以这不是“明显的拼写错误”。(Chrome、Firefox、Safari - `root.classList.add('myCssClass')` 在这三个浏览器中都有效。)您使用 IE 吗? (2认同)

c24*_*24w 12

这应该也有效:

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

兼容性.

编辑:

IE 10认为它是只读的; 然而:

有效!?

歌剧作品:

作品

我也可以确认它适用于:

  • Chrome 26
  • Firefox 19.02
  • Safari 5.1.7


aeb*_*old 11

我建议你看一下jQuery.

jQuery方式:

$("html").addClass("myClass");
Run Code Online (Sandbox Code Playgroud)

  • 您不需要jQuery来选择带有JavaScript的元素. (22认同)
  • @aebersold我同意jQuery易于学习和使用,但是只需添加50K即可下载(加上一个额外的请求),只是添加一个类,这有点过分恕我直言。 (2认同)

ama*_*ma2 7

你应该追加类不要覆盖它

var headCSS = document.getElementsByTagName("html")[0].getAttribute("class") || "";
document.getElementsByTagName("html")[0].setAttribute("class",headCSS +"foo");
Run Code Online (Sandbox Code Playgroud)

我仍然建议使用jQuery来避免浏览器不兼容


Tom*_*rez 6

document.documentElement.classList.add('myCssClass');
Run Code Online (Sandbox Code Playgroud)

classList自ie10开始受支持:https://caniuse.com/#search=classlist