Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Javascript code to recursively search for a element given the element's Id

1 view
Skip to first unread message

Cal Who

unread,
May 22, 2010, 2:38:38 PM5/22/10
to
I need Javascript code to recursively search for a element given the
element's Id so that I can modify a elements attributes.

I do not use JQuery but I believe that once when I was searching the
Internet for something else I saw that JQuery has a function called $ that
did just that. And the author showed the Javascript code from that library.
I'm not sure if that is what I need but now that I want it I can't find it.

Bottom line: Can you point to (or supply) Javascript code to recursively
search for a element given it's Id?

Thanks in advance


Registered User

unread,
May 22, 2010, 2:58:06 PM5/22/10
to

Perhaps you mean something like

var element = document.getElementById('someID');

regards
A.G.

peterbromberg

unread,
May 22, 2010, 3:33:48 PM5/22/10
to
You do not need a recursive function to find an element in a document by its id.

Just use

var element = document.getElementById('someID');


Cal Who wrote:

Javascript code to recursively search for a element given the element's Id

22-May-10

I need Javascript code to recursively search for a element given the
element's Id so that I can modify a elements attributes.

I do not use JQuery but I believe that once when I was searching the
Internet for something else I saw that JQuery has a function called $ that
did just that. And the author showed the Javascript code from that library.

I am not sure if that is what I need but now that I want it I cannot find it.

Bottom line: Can you point to (or supply) Javascript code to recursively

search for a element given it is Id?

Thanks in advance

Previous Posts In This Thread:


Submitted via EggHeadCafe - Software Developer Portal of Choice
Free Online Courses Available for Eggheadcafe.com Users
http://www.eggheadcafe.com/tutorials/aspnet/5261083e-6e03-4b25-8728-fc3cf6855293/free-online-courses-avail.aspx

Cal Who

unread,
May 22, 2010, 6:19:25 PM5/22/10
to
That's what I thought but lost confidence when it returned null in the
following:

<script type="text/javascript">

function SetMargins(id) {

var element = document.getElementById(id);

...

Which is in the .master and the id looks like I'd expect:

id = "ctl00_BottomImageCPH_QQQ"

I called it from and aspx.vb file

<asp:Content ID="Content8" runat="server"
ContentPlaceHolderID="BottomImageCPH">

<script type="text/javascript">

SetMargins('<%=QQQ.ClientID%>');

</script>


<div runat="server" id="QQQ" style="margin-left: 10%; margin-right: 10%;" >

...


Why the null??


Thanks


Mark Rae [MVP]

unread,
May 22, 2010, 7:18:46 PM5/22/10
to
" Cal Who" <CalWho...@roadrunner.com> wrote in message
news:ht9l9g$dti$1...@news.eternal-september.org...

> Why the null??

Because of ASP.NET's control ID munging.

var control = document getElementById('<%=MyControl.ClientID%>');


--
Mark Rae
ASP.NET MVP
http://www.markrae.net

Registered User

unread,
May 22, 2010, 7:31:13 PM5/22/10
to

From the second snippet it appears the SetMargins method is being
called as the document is rendered. The document is rendered from top
to bottom. If SetMargins is called before control QQQ is rendered to
the document, the document won't find the control, and
document.getElementById will return null.

You may have to read that last sentence a couple of times ;)

I would suggest attaching a javascript method to the page body's
onload event. That method will be called after the page has been
rendered. From within that method make the call to SetMargins.

regards
A.G.

Cal Who

unread,
May 22, 2010, 8:30:30 PM5/22/10
to

"Mark Rae [MVP]" <ma...@markrae.net> wrote in message
news:D114E876-E170-4A90...@microsoft.com...
Help me out here. It seems to me that
calling it from the .vb file using the clientId
is effectively the same.
And the munged string gets passed.

No?

As ways, Thanks


Cal Who

unread,
May 22, 2010, 8:34:51 PM5/22/10
to

"Registered User" <n4...@ix.netcom.com> wrote in message
news:rbogv5p4i6uotm8qg...@4ax.com...

> On Sat, 22 May 2010 18:19:25 -0400, " Cal Who"
> <CalWho...@roadrunner.com> wrote:
>
>>That's what I thought but lost confidence when it returned null in the
>>following:
>>
>><script type="text/javascript">
>>
>>function SetMargins(id) {
>>
>>var element = document.getElementById(id);
>>
>>...
>>
>>Which is in the .master and the id looks like I'd expect:
>>
>>id = "ctl00_BottomImageCPH_QQQ"
>>
>>
>>
>>I called it from and aspx.vb file
>>
>><asp:Content ID="Content8" runat="server"
>>ContentPlaceHolderID="BottomImageCPH">
>>
>><script type="text/javascript">
>>
>>SetMargins('<%=QQQ.ClientID%>');
>>
>></script>
>>
>>
>><div runat="server" id="QQQ" style="margin-left: 10%; margin-right: 10%;"
>> >
>>
>>...
>>
>>
>>Why the null??
>>
> From the second snippet it appears the SetMargins method is being
> called as the document is rendered. The document is rendered from top
> to bottom. If SetMargins is called before control QQQ is rendered to
> the document, the document won't find the control, and
> document.getElementById will return null.
I bet that is why IE8 developer tool only shows the HTML to just befor QQQ.
That's as much as was rendered.


>
> You may have to read that last sentence a couple of times ;)
>
> I would suggest attaching a javascript method to the page body's
> onload event. That method will be called after the page has been
> rendered. From within that method make the call to SetMargins.

But there are no events in a content page, is there?

>
> regards
> A.G.


Thanks


Harlan Messinger

unread,
May 23, 2010, 12:43:40 AM5/23/10
to
Mark Rae [MVP] wrote:
> " Cal Who" <CalWho...@roadrunner.com> wrote in message
> news:ht9l9g$dti$1...@news.eternal-september.org...
>
>> Why the null??
>
> Because of ASP.NET's control ID munging.
>
> var control = document getElementById('<%=MyControl.ClientID%>');
>
>
He did that, but at the point where his SetMargins function was called.

Mark Rae [MVP]

unread,
May 23, 2010, 1:59:49 AM5/23/10
to
" Cal Who" <CalWho...@roadrunner.com> wrote in message
news:ht9sv9$cdh$1...@news.eternal-september.org...

> No?

Yes, but it seems from other replies that you're trying to call the
SetMargins function before the page is completely rendered, which is why
it's not finding the control...

Registered User

unread,
May 23, 2010, 4:38:12 AM5/23/10
to
On Sat, 22 May 2010 20:34:51 -0400, " Cal Who"
<CalWho...@roadrunner.com> wrote:

This is true but a solution can be found at
http://www.webreference.com/programming/javascript/onloads/

regards
A.G.

Cal Who

unread,
May 23, 2010, 8:35:45 AM5/23/10
to

"Registered User" <n4...@ix.netcom.com> wrote in message
news:42qhv51mlka86p754...@4ax.com...

I moved the call to right after the </div> and that seems to have fixed it.
I'm not sure if that is a reliable way.

Do you think adding an event would be more reliable (say over different
browser types)

In this situation I don't see the "magically change" he referred to
probably because the rendering and change is so close.

In any event I'm saving that link for possible later need- good stuff.

Thanks

Cal Who

unread,
May 23, 2010, 8:20:44 AM5/23/10
to

"Mark Rae [MVP]" <ma...@markrae.net> wrote in message
news:00C8F499-75A3-4B97...@microsoft.com...
True, I just move the call to after the </div> and that seems to have fixed
it. I'm not sure if that is a reliable way.

Thanks


Registered User

unread,
May 23, 2010, 11:05:49 AM5/23/10
to
On Sun, 23 May 2010 08:35:45 -0400, " Cal Who"
<CalWho...@roadrunner.com> wrote:

I would use the onload event because the page has been loaded. Leaving
the call in-line with the rendering works but is subject to error if
the mark-up gets re-arranged by someone else. AFAIK all browsers
support the onload event so that should not be an issue.

>In this situation I don't see the "magically change" he referred to
>probably because the rendering and change is so close.
>

If the user could see the change there wouldn't be any magic ;)

>In any event I'm saving that link for possible later need- good stuff.
>

regards
A.G.

0 new messages