Javascript,从`<;中删除类的最快方法;车身>`
我有一个body元素,我在它上面添加了几个类。在浏览器读取Javascript,从`<;中删除类的最快方法;车身>`,javascript,html,css,Javascript,Html,Css,我有一个body元素,我在它上面添加了几个类。在浏览器读取no-javascript类之后,我想从中删除它 <body class="foo boo no-javascript bla"> <script type="javascript"> // remove no-javascript class here </script> //此处不删除任何javascript类 好吧,既然两个字符之间的额外空格无关紧要,我想说: d
no-javascript
类之后,我想从中删除它
<body class="foo boo no-javascript bla">
<script type="javascript">
// remove no-javascript class here
</script>
//此处不删除任何javascript类
好吧,既然两个字符之间的额外空格无关紧要,我想说:
document.body.className = document.body.className.replace("no-javascript","");
.只需使用
<noscript>Your browser does not support JavaScript!</noscript>
您的浏览器不支持JavaScript!
因为无论你在
noscript
标签中放置什么,如果关闭Javascript,标签都会显示出来,如果打开JS,标签什么也不会显示。没有用于此的本机Javascript函数,但我总是使用以下代码(借鉴/启发自
regex比其他答案中提到的replace
函数做得更好,因为它检查是否存在确切的类名,而不是更多或更少。名为“piano javascript”的类在这个版本中保持不变
对于(包括IE10及以上),您还可以使用:
document.querySelector('body').classList.remove('no-javascript');
这将删除所有类,不仅仅是
没有javascript
@El Ronnoco:我知道。但它确实会删除类,正如所问的那样。我知道我过于文字化,但这是最快的:)要点。像真正的程序员一样思考!:)我投了反对票,但重新考虑了一下,因为它确实回答了这个问题。我实际上最喜欢这个,在添加另一个窗口宽度更改之前,我使用它清除所有类名。但我想显示所有页面,即使js被禁用,我只需要在调用另一个类时,该类使用CSSFall隐藏某些元素例如,“piano javascript”。@Tim-我同意,但看看类名,这是一个非常具体的用例。同意。只是向任何希望将其应用于geenral案例的人指出。@Tim-是的,公平地说,对于目前为止已经准备好的任何人来说,上面更普遍的用法是:document.body.className=”“+document.body.className+”.replace(“无javascript”,”)代码>。。。除非className
字符串的开头有“no javascript”。@Stephan Muller的回答涵盖了一般情况。但有一件事:我会丢失hasClass()
签入removeClass()
。这是多余的。因为这是我喜欢的方法,我会解释的document.querySelector
使用CSS选择器语法选择页面上的指定元素,在本例中为正文
。接下来,classList
返回与元素关联的类。最后,.remove
将从类列表中删除任何指定的类。
function removeClass(ele,cls) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className = ele.className.replace(reg,' ');
}
removeClass(document.getElementById("body"), "no-javascript")
document.querySelector('body').classList.remove('no-javascript');
document.querySelector('body').classList.remove('no-javascript');