trstill Ответов: 2

.net с главной страницей как использовать переменную для поиска элемента управления на странице .aspx с помощью javascript


Hello...
I am trying to use javascript document.getElementById() to find a server control on my page.
The page uses a master page.
The challenge is the control has a variable name.
In this case, these are textboxes with IDs like customer_123, customer_654

The javascript function is passed a variable for each control like thisid
I can always use something like   document.getElementByID('ctl00_maincontent_customer' + thisid)).value
But, I do not like using that hard-codes syntax and prefer to use
document.getElementByID('<%=thiscontrolid.ClientID%>').value

I cannot find a way to create the [thiscontrolid] as a variable whose value is partially passed to the function.

For example.  Something like:
function getMyControl(thisid)
{
  document.getElementByID("<%=customer_[thisid].ClientID%>").value
}

But I have not been able to find a syntax that will allow me to do this.
Any suggestions would be appreciated.

What I have tried:

<pre>document.getElementByID("<%=customer_" & thisid.ClientID%>").value

Sarita Mall

Почему бы вам не использовать J-query вместо JavaScript?

2 Ответов

Рейтинг:
1

F-ES Sitecore

Если бы я был на вашем месте я бы бросил попытки найти элементы по идентификатору и вместо этого добавил бы атрибут данных к элементу

<asp:TextBox ID="Customer_123" data-id="123" runat="server" />


В вашем javascript найдите любой элемент с атрибутом data-id 123. Если вы не ориентируетесь на старые браузеры это довольно просто

https://stackoverflow.com/questions/7084557/javascript-select-all-elements-with-data-attribute-without-jquery

если вы ориентируетесь на старые браузеры, было бы проще использовать jQuery, но если вам нужно придерживаться js, это означает, что вы получаете все элементы по тегу и циклически пытаетесь оштрафовать те, которые вы ищете.


Рейтинг:
0

Sarita Mall

Привет,
вы можете попробовать jquery, и это очень легко.

код файл webform1 :

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"><br />
    <div runat="server" id="customer_1"><br />
        I am first control</div><br />
    <div runat="server" id="customer_2"><br />
        I am second control</div>        <br />
</asp:Content>


На главной странице используйте следующий скрипт:

<script type="text/javascript" src="jquery-1.11.0.min.js"></script>

//нужно дать jquery путь

<script type="text/javascript">
        $(document).ready(function() {
            getMyControl(1);
            getMyControl(2);
        });

        function getMyControl(thisid) {
            var createnew = "[id$=customer_" + thisid + "]";
            var controlhtml = $(createnew).html();
            alert(controlhtml);
        }
    </script>


Пожалуйста,проголосуйте, если это решение вашей проблемы.

С уважением,
Сарита