Change :hover CSS properties with JavaScript Change :hover CSS properties with JavaScript javascript javascript

Change :hover CSS properties with JavaScript


Pseudo classes like :hover never refer to an element, but to any element that satisfies the conditions of the stylesheet rule. You need to edit the stylesheet rule, append a new rule, or add a new stylesheet that includes the new :hover rule.

var css = 'table td:hover{ background-color: #00ff00 }';var style = document.createElement('style');if (style.styleSheet) {    style.styleSheet.cssText = css;} else {    style.appendChild(document.createTextNode(css));}document.getElementsByTagName('head')[0].appendChild(style);


You can't change or alter the actual :hover selector through Javascript. You can, however, use mouseenter to change the style, and revert back on mouseleave (thanks, @Bryan).


What you can do is change the class of your object and define two classes with different hover properties. For example:

.stategood_enabled:hover  { background-color:green}.stategood_enabled        { background-color:black}.stategood_disabled:hover { background-color:red}.stategood_disabled       { background-color:black}

And this I found on:Change an element's class with JavaScript

function changeClass(object,oldClass,newClass){    // remove:    //object.className = object.className.replace( /(?:^|\s)oldClass(?!\S)/g , '' );    // replace:    var regExp = new RegExp('(?:^|\\s)' + oldClass + '(?!\\S)', 'g');    object.className = object.className.replace( regExp , newClass );    // add    //object.className += " "+newClass;}changeClass(myInput.submit,"stategood_disabled"," stategood_enabled");