Many browsers, certainly Chrome and Firefox (from experience) return their colors in rgb()
format, rather than hexadecimal; regardless of the format in which they were supplied (#fff
, white
, hsl(0,100%,100%)
all return rgb(255,255,255)
).
That said, if you use css class-names then you don't need to worry about toggling between specific colours, or how to compensate for the vagaries in how specific browsers return those colours. In plain JavaScript, for example it's quite simple to implement a class-change function that achieves the same end-result:
function toggleClass(elem, cssClassOn) {
var test = elem.classList.contains(cssClassOn);
elem.classList[ test ? 'remove' : 'add' ](cssClassOn);
}
document.getElementById('test').addEventListener('click', function (e) {
toggleClass(e.target, 'on');
});
JS Fiddle demo.
The above, of course, needs to be coupled with the appropriate CSS styling.
For those browsers that don't implement the Element.classList
API, a simple alternative is:
function toggleClass(elem, cssClassOn) {
var currentClasses = elem.className,
test = currentClasses.indexOf(cssClassOn) > -1;
if (test) {
elem.className = currentClasses.replace(cssClassOn,'');
}
else {
elem.className += currentClasses + ' ' + cssClassOn;
}
}
JS Fiddle demo.
References: