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

StackOverflow https://stackoverflow.com/questions/675060

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

будем признательны за любые предложения

Спасибо, Эндрю

Это было полезно?

Решение

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

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

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

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

Другие советы

Создание элемента runat="server" изменения на стороне клиента идентификатор этого элемента основан на том, что ASP.NET контейнеры назвав его внутри.Так что, если вы используете document.getElementById чтобы манипулировать элементом, вам нужно будет передать ему новый идентификатор, сгенерированный .NET.Загляни в Идентификатор клиента свойство для получения этого сгенерированного идентификатора ... вы можете использовать его встроенным в ваш 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top