Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #28433
| Path | csiph.com!optima2.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!1.eu.feeder.erje.net!weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail |
|---|---|
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
| Newsgroups | comp.lang.javascript |
| Subject | Re: Recursive function to find a node in the DOM |
| Supersedes | <4508534.oS5OQyzpKv@PointedEars.de> |
| Date | Wed, 15 Jul 2015 11:59:59 +0200 |
| Organization | PointedEars Software (PES) |
| Lines | 58 |
| Message-ID | <5530725.v0RXNFEj4j@PointedEars.de> (permalink) |
| References | <mo53os$am9$1@dont-email.me> |
| Reply-To | Thomas 'PointedEars' Lahn <cljs@PointedEars.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="UTF-8" |
| Content-Transfer-Encoding | 8Bit |
| X-Trace | solani.org 1436954585 30655 eJwNyckBwCAMA7CVAjncdSi29x+h1Veds+aipqfa7bnxIKvS4mKxtffLI8lpgDSOGfGveBAfMkASfQ== (15 Jul 2015 10:03:05 GMT) |
| X-Complaints-To | abuse@news.solani.org |
| NNTP-Posting-Date | Wed, 15 Jul 2015 10:03:05 +0000 (UTC) |
| User-Agent | KNode/4.14.2 |
| Cancel-Key | sha1:o2iZJqk0HEr0xmtIpU2REGKVT3Q= |
| X-User-ID | eJwNycEBwCAIA8CVEEig4wjK/iPU7x2Mix1O0DEY08ONiwpSTaL0O+dOPJHdZZxGCGQzU2+2vfBZlaJ54fMDVloVlg== |
| Cancel-Lock | sha1:z1To9VDKSXOb+mr8HA8m9hvpypU= |
| X-NNTP-Posting-Host | eJwFwYEBgDAIA7CXYNDizgGl/59ggqDzrSSYEFRukDPO3i3fQarzhOGhlYXZENvqL/3oTvwCAxBf |
| Xref | csiph.com comp.lang.javascript:28433 |
Show key headers only | View raw
danca (Daniele Campagna) wrote:
> I wrote this small recursive function to find a node (having a name) in
> a DOM element:
>
> //usage: nodeFind (element to inspect (object), f.e. a form, name of the
> element to search for, 3rd parameter empty at first call)
>
> function nodeFind(el,n,retval){
> if (el.name==n) {
> return (el)
> }else{
> if (el.hasChildNodes) {
> for (var z=0;z<el.childNodes.length;++z){
> var a=el.childNodes.item(z);
> retval=nodeFind(a,n,retval)
> }
> }
> }
> return retval
> //^^^^^^^^^^^^ note!
> }
document.forms[…].elements[…] and getElementsByTagName(…) exist. You do not
need that function even for Netscape Navigator 2 (the fact aside that it
would not work there as it is).
> I needed to find a specific control in a form, in order to substitute an
> <input readonly> with a <file> (via replaceChild()) to upload a file if
> the form is prevalidated, etc.
> (then IIRC I discovered that IE was not able to refer to the substitued
> control via <form>[name] - this is another story :-) )
If you can change the input[type="text"] into an input[type="file"], for
security reasons the value of the control will be reset, and you cannot set
the “value” property of an input[type="file"] for the same reason. So this
appears to be a futile exercise (other than to test the security fix).
> I am using it from long time and it seems to work well on every browser.
… that you know about and have tested.
> One strange thing is the way recursion is implemented in javascript: I
> did not put the "return retval" statement at first, it seems unuseful,
> and went crazy before discovering that it is needed.
There is no “javascript”. Of course you need a break condition to prevent
infinite recursion; this has nothing to do with what you think would be
“javascript”. And the proper approach here is iteration (walking the
document tree), not recursion; because the stack size and/or nesting level
is limited (the Google Groups archive has test results), but an element’s
nesting level within a document tree is not.
--
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-07-15 09:59 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-07-15 11:59 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-07-15 12:03 +0200
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-07-15 13:36 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-07-19 12:27 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-07-19 12:34 +0200
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-07-21 12:08 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-07-25 14:11 +0200
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-07-25 21:22 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-07-27 16:12 +0200
Re: Recursive function to find a node in the DOM "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-08-08 04:50 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-08 09:33 +0200
Re: Recursive function to find a node in the DOM "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-08-12 00:48 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-12 01:18 +0200
Re: Recursive function to find a node in the DOM "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-08-13 23:26 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-16 08:48 +0200
Re: Recursive function to find a node in the DOM "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-08-20 02:11 +0200
Re: Recursive function to find a node in the DOM Scott Sauyet <scott.sauyet@gmail.com> - 2015-07-18 15:59 -0700
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-07-21 12:30 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-07-21 13:53 +0200
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-07-21 14:51 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-07-21 16:05 +0200
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-07-21 20:35 +0200
Re: Recursive function to find a node in the DOM Scott Sauyet <scott.sauyet@gmail.com> - 2015-07-30 22:10 -0700
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-08-06 10:07 +0200
Re: Recursive function to find a node in the DOM Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-06 20:15 +0200
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-08-08 01:21 +0200
Re: Recursive function to find a node in the DOM Scott Sauyet <scott.sauyet@gmail.com> - 2015-07-30 22:09 -0700
Re: Recursive function to find a node in the DOM Denis McMahon <denismfmcmahon@gmail.com> - 2015-07-29 03:04 +0000
Re: Recursive function to find a node in the DOM "danca (Daniele Campagna)" <cyberdanny@tiscalinet.it> - 2015-08-06 10:20 +0200
csiph-web