October 9, 2000 - Looping via an Iterator | WebReference

October 9, 2000 - Looping via an Iterator

Yehuda Shiran October 9, 2000
Looping via an Iterator
Tips: October 2000

Yehuda Shiran, Ph.D.
Doc JavaScript

The Enumerator object provides the iterating mechanism you can find in other OOP languages. It supports four methods: atEnd(), item(), moveFirst(), and moveNext(). The following example shows four links to our four latest tips. These links, together with other links hidden in this tip, form a collection, document.links. We loop through the items in the collection with a for() loop. During each iteration we just pop an alert box with the link's URL. The four methods that the Enumerator object supports are exactly what we need for this for() loop:

moveFirst() method.
  • We check for the loop termination with the
  • atEnd() method.
  • We step forward in the loop with the
  • moveNext() method.
  • We print the link's URL with the
  • item() method.

    This is the script that implements this loop:

    linkEnum = new Enumerator(document.links);
      for (linkEnum.moveFirst(); !linkEnum.atEnd(); linkEnum.moveNext()) {
        alert(linkEnum.item());
      }

    Here are the links and the button you need to click to invoke this script (the first four links are from somewhere else in this tip):

    0010108 0010107 0010106 0010105

    Here is the code for the links and the script that implements the function triggered by the button:

    <A HREF="http://www.webreference.com/js/tips/001008.html">0010108</A>
    <A HREF="http://www.webreference.com/js/tips/001007.html">0010107</A>
    <A HREF="http://www.webreference.com/js/tips/001006.html">0010106</A>
    <A HREF="http://www.webreference.com/js/tips/001005.html">0010105</A>
    <FORM>
    <INPUT TYPE="button" onclick=printLinks() value="Print Links">
    </FORM>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function printLinks() {
      linkEnum = new Enumerator(document.links);
      for (linkEnum.moveFirst(); !linkEnum.atEnd(); linkEnum.moveNext()) {
        alert(linkEnum.item());
      }
    }
    // -->
    </SCRIPT>