javascript StyleSheet样式操作类

早上在csdn上看有人问页面style sheet怎么修改里面的rule,就写了个类,该类对兼容FF和IE做了处理。

/*--------------------------------------------
    描述 : 添加新的样式rule
    参数 : styleSheets索引
    代码 : var ss = new styleSheet(0);
--------------------------------------------
*/

var  styleSheet  =   function (n)
{
    
var ss;
    
if (typeof n == "number") ss = document.styleSheets[n];
    
this.sheet = ss;
    
this.rules = ss.cssRules?ss.cssRules:ss.rules;
}
;

/*--------------------------------------------
    描述 : 查找样式rule,成功返回index,否则返回-1
    参数 : n为rule名称
    代码 : var ss = new styleSheet(0);
          ss.indexOf("className")
--------------------------------------------
*/

styleSheet.prototype.indexOf 
=   function (selector)
{
    
for(var i=0;i<this.rules.length;i++)
    
{
        
if(this.rules[i].selectorText==selector)
        
{
            
return i;
        }

    }

    
return -1;
}
;



/*--------------------------------------------
    描述 : 删除样式rule
    参数 : n为rule索引或者名称
    代码 : var ss = new styleSheet(0);
          ss.removeRule(0) || ss.removeRule("className")
--------------------------------------------
*/

styleSheet.prototype.removeRule 
=   function (n)
{
    
if(typeof n == "number")
    
{
        
if(n<this.rules.length)
        
{
            
this.sheet.removeRule?this.sheet.removeRule(n):this.sheet.deleteRule(n);
        }

    }
else
    
{
        
var i = this.indexOf(n);
        
this.sheet.removeRule?this.sheet.removeRule(i):this.sheet.deleteRule(i);
       
    }

}
;

/*--------------------------------------------
    描述 : 添加新的样式rule
    参数 : selector      样式rule名称
          styles        样式rule的style
          n             位置
    代码 : var ss = new styleSheet(0);
          ss.addRule("className","color:red",0);
--------------------------------------------
*/

styleSheet.prototype.addRule 
=   function (selector,styles,n)
{
    
if(typeof n == "undefined")
    
{
        n 
= this.rules.length;
    }

    
this.sheet.insertRule?this.sheet.insertRule(selector + "{" + styles + "}", n):this.sheet.addRule(selector, styles, n);
   
}
;

/*--------------------------------------------
    描述 : 设置样式rule具体的属性
    参数 : selector      样式rule名称
          attribute     样式rule的属性
          _value        指定value值
    代码 : var ss = new styleSheet(0);
           ss.setRuleStyle("className","color:","green");
--------------------------------------------
*/

styleSheet.prototype.setRuleStyle 
=   function (selector,attribute,_value)
{
    
var i = this.indexOf(selector);
    
this.rules[i].style[attribute] = _value;
}
;

/*--------------------------------------------
    描述 : 获得样式rule具体的属性
    参数 : selector      样式rule名称
          attribute      样式rule的属性
    代码 : var ss = new styleSheet(0);
          ss.getRuleStyle("className","color");
--------------------------------------------
*/

styleSheet.prototype.getRuleStyle 
=   function (selector,attribute)
{
    
var i = this.indexOf(selector);
    
return this.rules[i].style[attribute];
}
;

使用的例子,使用setRuleStyle方法将#pid的color改成green

< style  type ="text/css"   >  
#pid 
{color: red;} 
</ style >  
< id ="pid" > 22  </ >  
< input  type ="button"  onclick ="test()"  value =" test "   />
< script  language ="javascript"  type ="text/javascript"   >  
function test()
{
    
var sheet = new styleSheet(0);
    sheet.setRuleStyle(
"#pid","color","green");
}

</ script >

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值