How can I access runat="server" ASP element using javascript?

Andrew picture Andrew · Mar 23, 2009 · Viewed 26.1k times · Source

It seems everyone is doing this (in code posts etc.)...but I don't know how. :(

Whenever I try to manipulate an asp element using JavaScript I get an "element is null" or "document is undefined" etc. error.....

JavaScript works fine usually,...but only when I add the runat="server" attribute does the element seem invisible to my JavaScript.

Any suggestions would be appreciated.

Thanks, Andrew

Answer

Dave Ward picture Dave Ward · Mar 23, 2009

What's probably happening is that your element/control is within one or more ASP.NET controls which act as naming containers (Master page, ITemplate, Wizard, etc), and that's causing its ID to change.

You can use "view source" in your browser to confirm that's what's happening in the rendered HTML.

If your JavaScript is in the ASPX page, the easiest way to temporarily work around that is to use the element's ClientID property. For example, if you had a control named TextBox1 that you wanted to reference via JS:

var textbox = document.getElementById('<%= TextBox1.ClientID %>');