文件名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") 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 var r = rules[i]; if (r.selectorText == selector) { var rule = new CssRule(r); rule.index = i; return rule; } } return null; } }; 调用示例代码 复制代码 代码如下: BR>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- <BR>var ss = new StyleSheet(); <BR>window.onload = function() { <BR>ss.AddRule(".test", "color:#FF0000; background-color:#F0F0F0; font-size:12px; border:solid 1px #A0A0A0;"); <BR>} <BR>function Set() { <BR>var r = ss.getRule(".test"); <BR>var slt = document.getElementById("tbSelector").value; <BR>var v = document.getElementById("tbValue").value; <BR>var style = r.style; <BR>style[slt] = v; <BR>} <BR>// --> 样式 值 a b c d e