Home All Groups Group Topic Archive Search About

Getting the generated name attribute for use in JavaScript

Author
18 Nov 2006 1:16 AM
Nathan Sokalski
As most of us probably know, ASP.NET controls do not use an exact copy of a
control's ID for the HTML element's name or id attribute. When generating
JavaScript as part of a control or event, we need to have a way to reference
the HTML elements. The only way I have found to reference the HTML elements
in my generated Javascript is the following:

"document.getElementById('" & Me.ctrl.ClientID & "')"

However, this seems like a lot of extra code for each element. Why do the
controls have a ClientID property but not a ClientName property? If there
were a ClientName property, wouldn't it make the code a lot less complicated
and shorten the amount of JavaScript that had to be included with each
control? Or is this just one of those Microsoft things where they are trying
to get people to use the id attribute rather than the name attribute?
--
Nathan Sokalski
njsokal***@hotmail.com
http://www.nathansokalski.com/

Author
18 Nov 2006 6:32 AM
Spam Catcher
"Nathan Sokalski" <njsokal***@hotmail.com> wrote in
news:ecZHJ8qCHHA.4740@TK2MSFTNGP03.phx.gbl:

>  Why do the
> controls have a ClientID property but not a ClientName property? If
> there were a ClientName property, wouldn't it make the code a lot less
> complicated and shorten the amount of JavaScript that had to be
> included with each control? Or is this just one of those Microsoft
> things where they are trying to get people to use the id attribute
> rather than the name attribute?
>

You can potentially have two objects using the same ClientName - i.e.:

Form
+MyLabel
+MyUserControl
  +MyLabel

Thus the Form can have a MyLabel and a MyUserControl MyLabel... so if you
were to refer to MyLabel, which label is it? :-)

But in anycase, you *could* refer to objects by name ... if you know the
exact layout of the page. If you take a close look at the element IDs,
they're generated the same each time (provided the control nesting does not
change).