I have an element where I set a text color and a different text color for the hover state in the CSS. I have some javascript so that when I click the element, it changes the text color of the element. It works fine except that it also effects the hover CSS which I want to remain the same as the pre-clicked hover CSS. Is there anyway to either stop the hover css from being effected or to set the hover CSS?
CSS:
#test {color: blue;}
#test:hover {color:green;}
HTML:
<div id="test" onClick="javascript:change()">qwerty</div>
Javascript:
function change() {document.getElementById("test").style.color="#cc0000";};
You can use
!important
JSFIDDLEInstead of setting the color directly, it would be cleaner (and more effective to use a class).
CSS :
JavaScript :
demonstration
The issue that you are running into is the concept of specificity in css. Specificity controls what rules get applied and in what order. Because the javascript updates the style element, it will override the specificity and erase all previous rules regarding the color styling. so instead add a class eg "clicked" to the element. where clicked is your new color
This will do what you need.
Use classes!
Basic JavaScript:
Of course you would have to toggle the classes.