Team LiB
Previous Section Next Section

Manipulating Attributes

At this point you are probably wondering how to create more complex elements complete with attributes. The DOM Level 1 supports numerous attribute methods for elements, including getAttribute(name), setAttribute(attributename, attributevalue), and removeAttribute(attributeName). Under DOM Level 2 there is even a very useful Node object method, hasAttributes(), that can be used to determine if an element has any defined attributes. We won’t go into too much detail here, given the similarity of these methods to those we have already seen. The following example should illustrate attribute manipulation sufficiently:

<<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">>
<<html xmlns="http://www.w3.org/1999/xhtml">>
<<head>>
<<title>>Attribute Test<</title>>
<<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />>
<</head>>
<<body>>
<<font id="test" size="2" color="red">>Change my attributes!<</font>>
<<script type="text/javascript">>
<<!--
      theElement = document.getElementById('test');
//-->>
<</script>>
<<form name="testform" id="testform" action="#" method="get">>
Color: <<input type="text" id="color" name="color" value="" size="8" />>    
<<input type="button" value="Set Color" 
onclick="theElement.setAttribute('color',document.testform.color.value);" />>
<<input type="button" value="Remove Color"
 onclick="theElement.removeAttribute('color');" />>
<<br />>
Size: 
<<select onchange="theElement.setAttribute('size',this.options[this.selectedIndex].text);">>
  <<option>>1<</option>>
  <<option>>2<</option>>
  <<option selected="selected">>3<</option>>
  <<option>>4<</option>>
  <<option>>5<</option>>
  <<option>>6<</option>>
  <<option>>7<</option>>
<</select>>
<</form>>
<<script type="text/javascript">>
<<!--
  document.testform.color.value = theElement.getAttribute('color');
//-->>
<</script>>
<</body>>
<</html>>
Note 

The <<font>> tag is generally frowned upon in the emerging CSS-focused Web, but for this demo it was useful since its attributes show visual changes in a dramatic way.


Team LiB
Previous Section Next Section