Это приводит к ошибке, потому что сначала выполняется обработка тегов <%%> на стороне сервера.Затем результат выводится как текст, в данном случае это JavaScript.Итак, сервер видит это <%=" + element + ".clientID%>
и выдает ошибку, потому что не может этого понять.Предполагается, что строка " + element + "
является значением, для которого вызывается .clientID
.
Есть два способа обойти это.
Опция 1: ВыводВсе идентификаторы
Сделать хэш всех возможных значений элемента.Если у вас более пары, этот метод, вероятно, не будет работать для вас.
var elements = [
coolbutton: '<%= coolbutton.ClientId %>',
simplebutton: '<%= simplebutton.ClientId %>',
otherbutton: '<%= otherbutton.ClientId %>'
];
Тогда вы можете получить идентификатор, выполнив следующее:
var elementId = elements[element];
Опция2. Используйте Ends-with
Если вы можете использовать jQuery, то есть удобный способ ссылаться на элементы управления ASP.Net по ID.По сути, все идентификаторы ASP.Net оканчиваются фактическим именем переменной, которое вы используете в коде.Итак, если у вас есть элемент с именем CoolButton, вы можете найти его в javascript, используя jQuery, например так:
var element = $('[id$=CoolButton]');
Оператор $ = означает конец-с.Таким образом, он находит все элементы на странице с идентификатором, который заканчивается CoolButton.Фактический идентификатор элемента управления ASP.Net на странице будет длинным, но он всегда будет заканчиваться чем-то вроде NamingContainer$CoolButton
.
Если вы не можете использовать jQuery, вы можете написать эту логику самостоятельно.
function findByIdEndsWith(endId) {
//loop through all elements on the page
//if the current element's id ends with endId, return it
//return null;
}
Этот тип функции обсуждается подробнее здесь .