I have a body element on which I add a few classes. And I want to remove the no-javascript
class from it, after it\'s being read by the browser.
You can avoid all of that work simply by using
<noscript>Your browser does not support JavaScript!</noscript>
Since whatever you put inside of noscript
tag will be shown if Javascript is turned off and nothing will be shown if JS is turned on.
document.querySelector('body').classList.remove('no-javascript');
There are no native javascript functions for this, but I always use the following code (borrowed from/inspired by this snipplr
function removeClass(ele,cls) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className = ele.className.replace(reg,' ');
}
removeClass(document.getElementById("body"), "no-javascript")
The regex does a better job than the replace
functions mentioned in other answers, because it checks for the existence of that exact className and nothing more or less. A class named "piano-javascript" would stay intact with this version.
For modern browsers (including IE10 and up) you could also use:
document.querySelector('body').classList.remove('no-javascript');
document.body.className = '';
Well, since extra spaces between don't matter, I'd say:
document.body.className = document.body.className.replace("no-javascript","");
You can test it out here.