Google Answers Logo
View Question
 
Q: recursive DOM tree traversal function ( No Answer,   1 Comment )
Question  
Subject: recursive DOM tree traversal function
Category: Computers > Programming
Asked by: leftist-ga
List Price: $5.00
Posted: 20 Oct 2004 09:07 PDT
Expires: 19 Nov 2004 08:07 PST
Question ID: 417567
What I'd like to see is a recursive function that calls itself to
explore every node of a browser's DOM. My idea is to attach a .title
to certain input fields to mark them for special processing, and then
call a generic recursive routine to process every item on the webpage.
Please keep in mind that I prefer a clear and generic example, as I am
mainly asking this question to learn from the answer. Javascript
example preferred, but I can probably adapt a VBA function to
javascript without too much trouble.

I'm a VB/ASP developer that is picking up javascript, so bonus points
if someone can point out the syntax for a javascript equivalent to the
VBA For Each Element In collection structure.
Answer  
There is no answer at this time.

Comments  
Subject: Re: recursive DOM tree traversal function
From: jeffemminger-ga on 20 Oct 2004 15:54 PDT
 
do you want to attach a title to all document elements, or just form elements?

here's how to do both:

function attachToAll() {
  var els = document.getElementsByTagName("*");

  for (var x = 0; x < els.length; x++) {
    els[x].title = "Some title";
  }
}

function attachToFormElements() {
  var forms = document.forms;

  for (var x = 0; x < forms.length; x++) {
    var els = forms[x].elements;

    for (var y = 0; y < els.length; y++) {
      els[y].title = "Some title";
    }
  }
}

// uncomment the one you want to run...
//window.onload = attachToAll;
//window.onload = attachToFormElements;


additionally, you can make "attachToFormElements" more specific by
checking for a certain input type to attach to, or a certain css class
etc

the construct for enumerating object properties is as such:

var doc = document;

for (prop in doc) {
  alert( prop + " = " + doc[prop] );
}

Important Disclaimer: Answers and comments provided on Google Answers are general information, and are not intended to substitute for informed professional medical, psychiatric, psychological, tax, legal, investment, accounting, or other professional advice. Google does not endorse, and expressly disclaims liability for any product, manufacturer, distributor, service or service provider mentioned or any opinion expressed in answers or comments. Please read carefully the Google Answers Terms of Service.

If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you.
Search Google Answers for
Google Answers  


Google Home - Answers FAQ - Terms of Service - Privacy Policy