Now, that worked out OK for moving around one object on a page, but when you get into moving a lot of objects around a page in sequence or doing multiple actions off of multiple events, not 
  only will your code start ballooning in size (what with having to do multiple 
  if/then statements every time you access an object), but you're going to get really 
  sick of typing document.truck.left for every action. And in the Netscape 
  model, when you nest DIVs, you create an increased hierarchy in the document object 
  model, which looks like this:
<div id="foo">
   <div id="bar">
      <div id="sna">
      </div>
   </div>
</div>
To access foo would be document.foo, but to access bar would be 
  document.foo.document.bar. And to access sna would be document.foo.document.bar.document.sna.
YIKES!
So to deal both with the increasing size of referencing an object and to prevent 
  the need for a conditional every time an object is moved, there's a 
  snazzy little trick you can use. And you're probably more familiar with it
  than you realize.
Anyone who's ever worked with JavaScript on a Web page has probably dealt with 
  opening up a little popup window. So, this little snippet of code will 
  look mighty familiar:
windowID = window.open('name', 'http://blah.com/');
The window pops open, but you are able to continue to control that window by 
  using the windowID as a reference to it. You can change the source by saying 
  windowID.location = 'http://www.taylor.org/', or you can close the 
  window by saying "windowID.close()". Or do all kinds of stuff to it. 
  What you have done is to create a reference to the JavaScript object. This same 
  technique lets you greatly simplify your code for dynamic HTML. 
You may have noticed that, in the chart on the last page, there are similarities in the syntax 
  for most of the positioning properties - they just happen to fall under different 
  objects. So let's quickly solve this little problem with one JavaScript routine.
<script>
function setup(){
   if(document.layers){
      daTruck = document.truck;
   } else if(document.all) {
      daTruck = truck.style;
   }
}
</script>
Now the moveIt function can read
function moveIt() {
   daTruck.left = parseInt(daTruck.left) - 5;
   if(parseInt(daTruck.left) < 0){
      daTruck.left = 480;
   }
   setTimeout('moveIt()', 100);
}
Much smaller, isn't it? So how about a quick assignment? Take the dramatis personae 
  page that you built yesterday, and have all the DIVs fly in. Yes, I know it's 
  cheesy and overdone, but it's easy (which is why it's cheesy and overdone). 
  Then move on to the next page.
	
next page»