views:

1150

answers:

4

I am trying to apply styles to HTML tags dynamically by reading in the value of certain HTML attributes and applying a class name based on their values. For instance, if I have:

<p height="30">

I want to apply a class="h30" to that paragraph so that I can style it in my style sheet. I can't find any information on getting the value of an attribute that is not an id or class. Help?

A: 

Attributes are just properties (usually). So just try:

for (e in ...) {
    if (e.height == 30) {
        e.className = "h30";
    }
}

Or use something like jquery to simplify this kind of stuff.

Frank Krueger
+3  A: 

See: getAttribute(). Parameter is the name of the attribute (case insensitive). Return value is the value of the attribute (a string).

Be sure to see the Remarks in MSDN before dealing with IE...

Shog9
+5  A: 

I would highly recommend using something like jquery where adding classes is trivial:

$("#someId").addClass("newClass");

so in your case:

$("p[height='30']").addClass("h30");

so this selects all paragraph tags where the height attribute is 30 and adds the class h30 to it.

SeanDowney
+2  A: 

It's better to separate layout and presentation.

Despite using CSS, you're tying these two together. Use better class names (why does it have to have 30px height? Is it menubar? footer? banner?)

porneL