Как получить доступ к DIV из JavaScript, если ASP.NET искажает его идентификатор? - PullRequest
3 голосов
/ 15 июня 2010

У меня есть веб-страница, которая содержит элемент "div".На странице есть javascript для ссылки на div: document.getElementById('divId').Это работало нормально, пока другой разработчик не изменил дизайн страницы для использования главной страницы ASP.

Теперь document.getElementById('divId') возвращает ноль.Похоже, что ASP.net добавляет некоторые символы к именам элементов в формах содержимого, когда вы используете главную страницу.Как я могу узнать, какой идентификатор у div при загрузке страницы?

Обновление Позвольте мне привести конкретный пример, чтобы прояснить вопрос: у моей страницы был div с идентификатором divNotice.После изменения моей страницы на использование главной страницы, я вижу, когда я печатаю источник на странице, которая отображает, что идентификатор div равен ctl00_ContentPlaceHolder1_divNotice.У меня вопрос: откуда мне знать, какой будет div ID, когда с ним будет работать фреймворк?

Ответы [ 4 ]

10 голосов
/ 15 июня 2010

Я думаю, что это то, что вы ищете.

document.getElementById('<%=divNotice.ClientID%>')

, чтобы получить идентификатор вашего элемента, как показано на html-странице, используйте .ClientID

Надеюсь, что это поможет.

2 голосов
/ 15 июня 2010

Динамически создайте JavaScript, используя Control.ClientID для определения вычисленного идентификатора div.

document.getElementById('<%= DivControl.ClientID %>')

Или выполнить поиск элемента на стороне клиента, используя базовый идентификатор в качестве шаблона поиска. См. Здесь: Общий способ поиска идентификаторов клиентов ASP.NET с помощью jQuery

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

1 голос
/ 15 июня 2010

Вы можете проверить, существует ли элемент, проверив, не возвращает ли он значение NULL

if (document.getElementById('divId') != null) { /* do your stuff*/ }

другими словами:

if (document.getElementById('divId')) { /* do your stuff*/ }

теперь вы отредактировали свой оригинальный вопрос, который я получил ... я бы сделал что-то вроде этого:

var arrDivs = document.getElementsByTagName('div'),
    strDivName = "divId";

for (i=0;i<=arrDivs.length;i++){
    if( arrDivs[i].id.indexOf(strDivName) != -1) {
        alert("this is it")
    }
}

вы можете увидеть демо здесь: http://jsfiddle.net/pnHSw/2/

Я думаю, вы могли бы сделать это лучше с помощью регулярных выражений.

Но это чистый способ JS, я не знаю ASP.net

edit: я думаю, что решение Aristos намного чище: P

0 голосов
/ 16 июня 2010

может быть, вы можете использовать селектор потомков до CSS

<div id="wrapperControler">
    <controler id="controler"></controler>
</div>

Контроллер WrapperControler {

 dosomething;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...