RE: which is faster target.getElementsByTagName or target.firstChild / nextSibling

"Ryan Hicks" <[email protected]> Thu, 6 Apr 2006 17:15:18 -0700
Newsgroups gmane.comp.web.dom.wdf
Message-ID <[email protected]>
Rebecca,

 My vote would likely be for the getElementsByTagName, simply because the
conditional in the other option would have to reference the DOM an
additional time for each iteration.

 However, votes aside, you can always test the amount of time your code
takes to execute by doing something like the following:

 var dStart = new Date();

	...chunk of code...

 var dEnd = new Date();
 var nTimeDiff = dEnd.getDate() - dStart.getDate();
 alert('Execution time: ' + nTimeDiff + 'ms');

 Without having your actual DOM, I can't test these two scenarios to verify
if my vote is correct.  If you find that this technique gets you an answer,
I'd love to know which version wins out!

-ryan

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of
becs027
Sent: Thursday, April 06, 2006 4:44 PM
To: [email protected]
Subject: [wdf-dom] which is faster target.getElementsByTagName or
target.firstChild / nextSibling

Hi all,

I'm doing an onload script to add rollover behaviour to list items
(dropdown menu style) for IE, and want to check which of two ways is
faster.

------------------------------------------------

Option 1 - add the behaviour using target.getElementsByTagName:

if (document.getElementById('navigation')) {
	    var target = document.getElementById('navigation');
	    var targetbuttons = target.getElementsByTagName('li');

	    for (var i = 0; i < targetbuttons.length; i++) {
		targetbuttons[i].onmouseover = rollover;
		targetbuttons[i].onmouseout = rolloff;
            }
	}

------------------------------------------------

Option 2 - add the behaviour with a while loop using firstChild,
nextSibling:

if (document.getElementById('navigation')) {
                var target = document.getElementById('navigation');
                var targetbutton = target.firstChild;

                while (targetbutton) {
                    targetbutton.onmouseover = rollover;
                    targetbutton.onmouseout = rolloff;
                    targetbutton = targetbutton.nextSibling;
                }
            }

------------------------------------------------

Thanks :)
Rebecca





Unsubscribe
[email protected]

List info
http://www.quirksmode.org/dom/list.html 
Yahoo! Groups Links



 





Unsubscribe
[email protected]

List info
http://www.quirksmode.org/dom/list.html 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/wdf-dom/

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/