动态样式类封装JS代码


Posted in Javascript onSeptember 02, 2009

文件名StyleSheet.js

// CssRule类由StyleSheet.getRule方法返回,不直接创建 
function CssRule(rule) { 
this.rule = rule; 
this.style = rule.style; 
this.selectorText = rule.selectorText; 
this.index = null; 
} 
function StyleSheet() { 
var head = document.getElementsByTagName("head")[0]; 
//通过新建标签来创建新样式 
/* 
在此不用document.createStyleSheet来完成,是因为在FF下 
如果未导入任何CSS文件的情况下document.createStyleSheet方法失败 
*/ 
var style = document.createElement("style"); 
style.type = "text/css"; 
head.appendChild(style); 
this.CatchStyle(document.styleSheets.length - 1); 
} 
StyleSheet.prototype = { 
//可直接捕获现有Style 
CatchStyle: function(index) { 
this.style = document.styleSheets[index]; 
if (navigator.userAgent.indexOf("MSIE") < 0) { //非IE浏览器补丁 
this.style.addRule = function(selector, style) { 
var index = this.cssRules.length; 
this.insertRule(selector + "{" + style + "}", index); 
}; 
this.style.removeRule = function(index) { 
this.deleteRule(index); 
}; 
} 
}, 
//新增样式 
AddRule: function(selector, style) { 
this.style.addRule(selector, style); 
}, 
//删除样式 
RemoveRule: function(index) { 
this.style.removeRule(index); 
}, 
//取得所有样式 
getRules: function() { 
if (this.style.rules) { //IE 
return this.style.rules; 
} 
return this.style.cssRules; //非IE 
}, 
//通过选择器,取得样式 
getRule: function(selector) { 
var rules = this.getRules(); 
for (var i = 0; i < rules.length; i++) { 
var r = rules[i]; 
if (r.selectorText == selector) { 
var rule = new CssRule(r); 
rule.index = i; 
return rule; 
} 
} 
return null; 
} 
};

调用示例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script src="StyleSheet.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"><!-- 
var ss = new StyleSheet(); 
window.onload = function() { 
ss.AddRule(".test", "color:#FF0000; background-color:#F0F0F0; font-size:12px; border:solid 1px #A0A0A0;"); 
} 
function Set() { 
var r = ss.getRule(".test"); 
var slt = document.getElementById("tbSelector").value; 
var v = document.getElementById("tbValue").value; 
var style = r.style; 
style[slt] = v; 
} 
// --></script> 
</head> 
<body> 
样式<input id="tbSelector" type="text" value="width" /> 
值<input id="tbValue" type="text" value="300px" /> 
<input type="button" value="设置" onclick="Set()" /> 
<div class="test">a</div> 
<div class="test">b</div> 
<div class="test">c</div> 
<div class="test">d</div> 
<div class="test">e</div> 
</body> 
</html>
Javascript 相关文章推荐
jquery json 实例代码
Dec 02 Javascript
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
JavaScript返回0-1之间随机数的方法
Apr 06 Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 Javascript
javascript基础语法学习笔记
Jan 04 Javascript
jquery UI Datepicker时间控件的使用及问题解决
Apr 28 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
Angular实现的简单查询天气预报功能示例
Dec 27 Javascript
JavaScript静态作用域和动态作用域实例详解
Jun 17 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
JS URL传中文参数引发的乱码问题
Sep 02 #Javascript
FF IE兼容性的修改小结
Sep 02 #Javascript
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 #Javascript
获取URL地址中的文件名和参数的javascript代码
Sep 02 #Javascript
Javascript 判断函数类型完美解决方案
Sep 02 #Javascript
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 #Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
Sep 01 #Javascript
You might like
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
php 猴子摘桃的算法
2017/06/20 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
[原创]图片分页查看
2006/08/28 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
python/golang 删除链表中的元素
2020/09/14 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
英语自荐信范文
2013/12/11 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
干部考核评语
2014/04/29 职场文书
行政求职信
2014/07/04 职场文书
解除劳动合同协议书
2014/09/17 职场文书
小学生毕业评语
2014/12/26 职场文书
大学生个人学习总结
2015/02/15 职场文书
交通事故被告答辩状
2015/05/22 职场文书
2019个人半年工作总结
2019/06/21 职场文书
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技