I have the following:
<style>
.el {color: blue;}
</style>
<div class="el">bla bla</div>
<div class="el">bla bla 123</div>
And i need to use JavaScript to change the color in .el
.
I know about document.styleSheets but that seems kind of crude, having to loop search for the class i want to change it that way. Isn't there some better (lighter) way to do this nowadays? Something like
document.stylesheets.getclass('.el').color = 'red';
Thanks.
-
This could be a helpful page to youGeorge– George2013年05月13日 10:39:44 +00:00Commented May 13, 2013 at 10:39
-
Check out Setting CSS pseudo-class rules from JavaScript @ StackOverflowSolessChong– SolessChong2013年05月13日 10:40:25 +00:00Commented May 13, 2013 at 10:40
-
You can change the class, I think it would be better idea.Sameera Thilakasiri– Sameera Thilakasiri2013年05月13日 10:42:46 +00:00Commented May 13, 2013 at 10:42
-
"Isn't there some better (lighter) way to do this nowadays?" Nope.There isn't.punkrockbuddyholly– punkrockbuddyholly2013年05月13日 10:57:02 +00:00Commented May 13, 2013 at 10:57
4 Answers 4
You're on the right track. The method you're looking for is getElementsByClassName
, not getClass
. It returns an array, and then you simply loop through the array and assign the new color.
var el = document.getElementsByClassName('el'),
i;
for (i = 0; i < el.length; i += 1) {
el[i].style.color = 'red';
}
P.S., obviously, this changes the style, not the stylesheet.
3 Comments
Try this:
var elem = document.getElementsByClassName('el');
for (var i = 0; i < elem.length; i++) {
elem[i].style.color = '#aaaaaa';
}
Comments
Changing the stylesheet dynamically is possible, but not that simple. Here is an example using .little PHP and jQuerY:
Comments
You can have 2 stylesheets such as:
<link id="style_1" rel="stylesheet" type="text/css" href="style_1.css">
<link id="style_2" rel="stylesheet" type="text/css" href="style_2.css">
Then add disabled
attribute with JS to the one you'd like to disable, so the other will take effect.