Как получить доступ к элементу runat="server" ASP с помощью javascript?

кажется, все это делают (в сообщениях кода и т. д.)...но я не знаю как :(

всякий раз, когда я пытаюсь манипулировать элементом asp с помощью javascript, я получаю "элемент равен нулю" или "документ не определен" и т. д. ошибка.....

javascript работает нормально, как правило,...но только когда я добавляю атрибут runat="server", элемент кажется невидимым для моего javascript.

любые предложения будут оценены

Спасибо, Андрей

4 ответов


вероятно, происходит то, что ваш элемент/элемент управления находится в пределах одного или нескольких ASP.NET элементы управления, которые действуют как контейнеры именования (Главная страница, ITemplate, Мастер и т.д.), И это вызывает его идентификатор для изменения.

вы можете использовать "view source" в своем браузере, чтобы подтвердить, что это происходит в отображаемом HTML.

Если ваш JavaScript находится на странице ASPX, самый простой способ временно обойти это -используйте свойство ClientID элемента. Для например, если у вас есть элемент управления TextBox1, на который вы хотите ссылаться через JS:

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

создание элемента runat="server" изменяет клиентский идентификатор этого элемента основан на том, что ASP.NET контейнеры назвав его внутри. Поэтому, если вы используете document.getElementById чтобы управлять элементом, вам нужно передать ему новый идентификатор, сгенерированный .Сеть. Посмотрите в параметр ClientID собственность получить сгенерированный идентификатор...вы можете использовать его в своем Javascript следующим образом:

var element = document.getElementById('<%=myControl.ClientID%>');

Если у вас есть текстовое поле:

<asp:TextBox id="txtText" runat="server" />

Вы можете использовать:

var textBox=document.getElementById('<%=txtText.ClientID %>');

любой WebControl предоставляет то же свойство ClientID.


все, хотя на вопрос был дан ответ, подумал, что я просто опубликую дополнительную информацию...

Рик Страл предоставил довольно интересную работу вокруг этой проблемы.

http://www.west-wind.com/WebLog/posts/252178.aspx

к счастью, когда ASP .NET 4.0 прибудет, это позволит вам точно указать, что будет идентификатор клиента быть!

http://www.codeproject.com/KB/aspnet/ASP_NET4_0ClientIDFeature.aspx