?
Solved

Access a dynamically created element

Posted on 2011-02-14
10
Medium Priority
?
648 Views
Last Modified: 2012-05-11
Hello,

We need to access dynamically created elements on the client side. We would like to do that by using their IDs.

Currently, we can achieve this via the Sys.Application._components node.

Any other viable suggestions?

$Find can be used but we don't know the ID of the elements.

getElementsByTagName wouldn't yield the right names since the objects themselves aren't rendered (CollapsedPanelExtender).

What other means are there to access the right ID other than using Sys.Application.getComponents() ????

Thanks a bunch.
0
Comment
Question by:cerub
  • 5
  • 4
10 Comments
 
LVL 83

Expert Comment

by:leakim971
ID: 34887616
If you put it in a unique "container", for example a div with a specific ID that you know, you know the child of this div is your object.
0
 

Author Comment

by:cerub
ID: 34887744
But wouldn't the child object's ID change in an arbitrary way as well? I would have to somehow retrieve the "new" ID of the DIV as well. What do you think?
0
 
LVL 83

Expert Comment

by:leakim971
ID: 34887840
I don't you really need an ID. Generaly we need to get a référence on an object. Once you get this reference you can get its ID easily. The div should be in your page. You know its ID. You put your dynamic object inside.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 

Author Comment

by:cerub
ID: 34887873
"Generaly we need to get a référence on an object. Once you get this reference you can get its ID easily."

Could you possibly provide an example reference, please?
0
 
LVL 83

Expert Comment

by:leakim971
ID: 34887990
var myRef = document.getElementById("theDivIdIKnow").childNodes[1];

Open in new window


try 0 instead 1 too
0
 
LVL 83

Assisted Solution

by:leakim971
leakim971 earned 1000 total points
ID: 34888082
another one, use getElementsByTagName("*")[0] instead childNodes[1]
0
 

Author Comment

by:cerub
ID: 34894616
Don't get me wrong but you still don't seem to know the names of the elements. You iterate them in order to learn their names.
0
 
LVL 2

Accepted Solution

by:
Aazmodeus earned 1000 total points
ID: 34895976
If you create components dynamically, I guess, you can set their IDs and pass them as parameters to a view. I don't really remember how to do that in ASP.NET. But in MVC you can add them into page Model or into ViewData dictionary and then call a javascript function using the passed parameters. Or you can simply create your own class where these ids will be defined as constants, which should be legit for both plain ASP.NET and MVC.

<script>
 //id is passed as a field DynamicElementID of view Model
 var obj = document.getElementById('<%=Model.DynamicElementId%>');
 //id is defined as a constant or a static field in ViewParams class
 var obj = document.getElementById('<%=ViewParams.DynamicElementId%>');
</script>

Open in new window

0
 

Author Closing Comment

by:cerub
ID: 34896044
Thank you! It seems there are two main ways of looking at this problem so I think it is only fair to split the points.

Thanks for the help.
0
 
LVL 83

Expert Comment

by:leakim971
ID: 34896053
>Don't get me wrong but you still don't seem to know the names of the elements.
The question is : Do you really need the name ? Or do you need a reference to work with the objects ?

>You iterate them in order to learn their names.
No iteration in my code, we get the first node having a tag... and I'm not sure a function like $Find don't use in its black chamber one loop (or more) or something not linear.

0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an anti-spam), the admin…
With just a little bit of  SQL and VBA, many doors open to cool things like synchronize a list box to display data relevant to other information on a form.  If you have never written code or looked at an SQL statement before, no problem! ...  give i…
Suggested Courses
Course of the Month16 days, 17 hours left to enroll

864 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question