如何通过JavaScript更改伪类样式?

如何通过JavaScript更改伪类样式?,javascript,html,css,pseudo-class,Javascript,Html,Css,Pseudo Class,为了简单起见,这个例子只是我需要做的一个例子。 比如说,我有一个元素,它的样式是在CSS中设置的。为元素以及伪类(比如element:hover)设置样式。我可以使用以下JavaScript覆盖元素的样式: element.style.setProperty('property-name','newvalue','')。 如何通过JavaScript更改伪类的样式 多谢各位 <html> <head> <style type='text/css'>

为了简单起见,这个例子只是我需要做的一个例子。 比如说,我有一个元素,它的样式是在CSS中设置的。为元素以及伪类(比如element:hover)设置样式。我可以使用以下JavaScript覆盖元素的样式: element.style.setProperty('property-name','newvalue','')。 如何通过JavaScript更改伪类的样式

多谢各位

<html>
<head>
      <style type='text/css'>
             #myBtn {
                background-color: red;
             }
             #myBtn:hover {
                background-color: blue;
             }
      </style>
</head>
<body>
      <button id='myBtn'>Colored button</button>

      <button onclick="ChangeColor();">Script button</button>

      <script type="application/x-javascript">
              function ChangeColor() {
                 var Btn = document.getElementById('myBtn');
                 Btn.style.setProperty('background-color', 'green', '');
              };
      </script>
</body>
</html>

#myBtn{
背景色:红色;
}
#myBtn:悬停{
背景颜色:蓝色;
}
彩色按钮
脚本按钮
函数ChangeColor(){
var Btn=document.getElementById('myBtn');
Btn.style.setProperty('background-color','green','';
};

CSS伪类和伪元素不是DOM的一部分,因此不能直接使用JavaScript修改它们的样式属性


某些动态伪类,如
:hover
可能具有类似的JavaScript事件(
onmouseover-onmouseout
),您可以使用这些事件来更改样式,但这并不意味着两者之间存在实际的关联。

我将使用一组不同的规则和一个附加类

<html>
<head>
  <style type='text/css'>
    #myBtn {
      background-color: red;
    }
    #myBtn:hover {
      background-color: blue;
    }
    #myBtn.changed {
      background-color: green;
    }
    #myBtn.changed:hover {
      background-color: yellow; /* or whatever you want here */
    }
</head>

#myBtn{
背景色:红色;
}
#myBtn:悬停{
背景颜色:蓝色;
}
#myBtn{
背景颜色:绿色;
}
#myBtn.已更改:悬停{
背景色:黄色;/*或任何您想要的颜色*/
}
然后

<script type="application/x-javascript">
      function ChangeColor() {
         var btn = document.getElementById('myBtn');
         btn.className = "changed";
      };
</script>

函数ChangeColor(){
var btn=document.getElementById('myBtn');
btn.className=“已更改”;
};

当然,这只适用于一个或几个不同的颜色值。

您不能直接修改它们,但可以将CSS插入DOM的头部部分

您可以修改IE6+和大多数其他浏览器中的现有样式表

编辑现有规则是可能的,但需要复杂的跨浏览器操作

本例向文档中的最后一个样式表添加新规则(选择器和声明)

function addCss(sel, css){
    S= document.styleSheets[document.styleSheets.length-1];
    var r= (S.cssRules!= undefined)? S.cssRules: S.rules;
    if(S.insertRule) S.insertRule(sel+'{'+css+'}',r.length);
    else if(S.addRule)S.addRule(sel,css,r.length);
}

 addCss('button:hover','background-color:blue;');

这并不完全正确-JavaScript当然可以创建一个覆盖CSS的新的
元素,尽管有些人可能会觉得这是一种令人讨厌的做法。谢谢大家的帮助!我想换个班是我完成任务的方法。遗憾的是,看似简单的任务需要变通办法。祝你们今天愉快!问:我真丢脸。看这个:我正在考虑同样的路线,但希望能有一个更直接的方法。感谢您的帮助。尝试使用此选项时,我会得到“StyleSheet”类型的值上不存在属性“cssRules”,以及“StyleSheet”类型的值上不存在属性“insertRule”。