我在JavaScript中引用了CSSStyleRule
对象,我希望将border-top-color
的样式更新为red !important
。如果我赋值red
,则不会出现问题。如果我指定值red !important
,则忽略该值(即未分配)。
myStyleSheetRule.style.borderTopColor = 'red'; // success
myStyleSheetRule.style.borderTopColor = 'red !important'; // fail
如何设置!important标志?
请注意,必须通过以编程方式访问的样式表规则来完成。在我的用例中,我无法分配样式属性或其他任何内容。我在Windows 7上使用Chrome。
答案 0 :(得分:4)
这样的事情应该有效:
<强> HTML 强>
<div id="colored">?</div>
默认样式表
#colored {
border-top: 1px solid Black;
}
<强>的Javascript 强>
var all = document.styleSheets,
s = all[all.length - 1],
l = s.cssRules.length;
if (s.insertRule) {
s.insertRule('#colored {border-top-color: Red !important}', l);
} else {
//IE
s.addRule('#colored', 'border-top-color: Red !important', -1);
}
答案 1 :(得分:0)
这应该成功;
var property='color';
var value='red !important';
var selector='h1';
if(value.indexOf("!important") > 0){
var newRule=myStyleSheetRule.style.cssText+" "+property+":"+value;
myStyleSheetRule.insertRule(selector + " { " + newRule + "; }",/*indexOfTheRule*/);
myStyleSheetRule.deleteRule(/*indexOfTheRule*/);
}
答案 2 :(得分:-2)
尝试:
myStyleSheetRule.setAttribute('style', 'border-top-color:red !important');
这将内联添加。