Re: which is faster target.getElementsByTagName or target.firstChild / nextSibli
"becs027" <[email protected]> Fri, 07 Apr 2006 02:00:55 -0000
| Newsgroups | gmane.comp.web.dom.wdf |
|---|---|
| Message-ID | <[email protected]> |
Thanks. I get weird results, and had to change the timediff bit a little to get a result, I used: var nTimeDiff = dEnd.getMilliseconds() - dStart.getMilliseconds(); In Firefox 1.5: getElementsByTagName took 313ms firstChild / nextSibling took 516ms In Internet Explorer 6: getElementsByTagName took 265ms firstChild / nextSibling took 156ms So looks like it depends on the browser. My function is only for IE which helps :) Cheers Rebecca --- In [email protected], "Ryan Hicks" <ryan.c.hicks@...> wrote: > > 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/