element.setAttribute('className','value') differs from element.className='value'

VERIFIED DUPLICATE of bug 197019

Status

()

Core
DOM: CSS Object Model
VERIFIED DUPLICATE of bug 197019
13 years ago
13 years ago

People

(Reporter: jescribn@us.ibm.com, Unassigned)

Tracking

Trunk
x86
Windows 2000
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

13 years ago
User-Agent:       Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; H010818; .NET CLR 1.1.4322)
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20040913 Firefox/0.10.1

element.setAttribute('className','abc') does not update the appearance of an 
object to match class style 'abc', even though element.className's value has 
been changed to 'abc'.  However, using element.className='abc' does update the 
appearance.  Both versions work in Internet Explorer.  I believe both are valid 
implementations.  Example code:

<style>
	.red	{color:#ff0000;}
	.green {color:#00ff00;}
	.blue {color:#0000ff;}
</style>
<div id="a" class="red">Text</div><br />
<a href="#" onClick="document.getElementById('a').setAttribute
('className','blue')">getElementbyID('a').setAttribute('className','blue')
</a><br>
<a href="#" onClick="document.getElementById
('a').className='green'">getElementbyID('a').className='green'</a><br>


Reproducible: Always
Steps to Reproduce:
1.Run the code above in mozilla or firefox
2.Click the option for blue, note that the class is not visually updated.
3.Click the option for green, note that the class is visually updated.

Actual Results:  
Results described in the steps above.

Expected Results:  
The browser should have visually updated the class in both circumstances.
The attribute is called "class", not "className".

change:
getElementbyID('a').setAttribute('className','blue')
to:
getElementbyID('a').setAttribute('class','blue')
and it works as expected.

So I'm pretty sure this is INVALID. Reporter- please comment if you disagree.

*** This bug has been marked as a duplicate of 197019 ***
Status: UNCONFIRMED → RESOLVED
Last Resolved: 13 years ago
Resolution: --- → DUPLICATE
(Reporter)

Comment 3

13 years ago
Referenced DOM HTML L2
Using "class" instead of "className" produces the correct functionality, 
however "class" is not the valid name for this attribute.  According to DOM 
HTML L2 "className" is used because class "collides with class definitions 
naming conventions."  It was "className" in DOM L1, too.
URL:
http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-58190037

Tnx.
Status: RESOLVED → UNCONFIRMED
Resolution: DUPLICATE → ---
(Reporter)

Comment 4

13 years ago
Read 197019 in more detail - understand point.

*** This bug has been marked as a duplicate of 197019 ***
Status: UNCONFIRMED → RESOLVED
Last Resolved: 13 years ago13 years ago
Resolution: --- → DUPLICATE
v
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.