我必须通过名称访问CSS类,下面的代码可以工作。但是如果我尝试hui["myclass"]
或hui[".myclass"]
而不是hui[0]
,它找不到它。
function change_class() {
var hui = document.styleSheets[0].rules || document.styleSheets[0].cssRules;
hui[0].style["color"] = "#ff0000"
}
.myclass {
color: #00aa00;
}
<div class="myclass" onclick="change_class()">Some Text</div>
**编辑:**我需要能够访问,因为我在第1行描述我不想访问通过页面上的个别元素,但直接访问的类名样式表。
所以你们都说我不能通过类名只通过索引访问样式表?
6条答案
按热度按时间kx5bkwkv1#
不,你不能通过选择器来访问它们--这是一个简单的列表,你首先必须为它建立一个索引:
当然,这不是一个万无一失的方法,有可能
.myClass, .myOtherClass
首先应该检查声明是否存在,而不是盲目地分配
color
属性。rdrgkggo2#
是的,伯奇是对的:
首先必须为样式列表构建索引。
但要注意:
如果有一个以上的样式表,你首先必须在样式表上循环。所以我想改进Bergis解决方案:
kupeojn63#
将返回匹配的元素数组。
您还可以使用以下内容:
Javascript:
仅更改选定div内的类。
然而,对这种方法的支持只能追溯到IE9,因此如果JQuery是一个选项,那么最好使用它。
编辑:
我想我误解了,看起来你想改变实际的CSS规则本身,而不是改变元素上的CSS。理论上,你可以写一个函数,它会根据名称为你找到规则,并改变它们的属性。我猜它看起来像这样(未经测试,应该工作):
然后调用:
5rgfhyps4#
要改变既定的规则,这是一种方法:
JS Fiddle demo .
还有一个稍微改进的替代方法(一个对象而不是两个数组,这需要1:1的关系):
JS Fiddle demo .
g6baxovj5#
要从javascript访问类,你只需要创建一个classist,如果它不存在的话。
这会将新类添加到具有指定类名的div中。
其他:
6mzjoqzu6#
(document.styleSheets[0].cssRules || document.styleSheets[0].rules)[0].style.color = '#ff0000'
应该可以工作。Quirksmode CSSOM (DOM CSS) compatibility table