javaScript를 사용하여 runat =“Server”ASP 요소에 액세스하려면 어떻게해야합니까?
-
21-08-2019 - |
문제
모두 가이 작업을 수행하는 것 같습니다 (코드 게시물 등) ...하지만 나는 방법을 모릅니다.
JavaScript를 사용하여 ASP 요소를 조작하려고 할 때마다 "요소는 null"또는 "document is deforned"등을 가져옵니다. 오류 .....
JavaScript는 일반적으로 잘 작동하지만 ... runat = "Server"속성을 추가 할 때만 요소가 내 JavaScript에 보이지 않는 것처럼 보입니다.
모든 제안은 감사 할 것입니다
고마워요, 앤드류
해결책
아마도 요소/컨트롤이 이름 지정 컨테이너 (마스터 페이지, 항목 판, 마법사 등) 역할을하는 하나 이상의 ASP.NET 컨트롤 내에있는 것입니다. 이로 인해 ID가 변경됩니다.
브라우저에서 "뷰 소스"를 사용하여 렌더링 된 HTML에서 일어나는 일을 확인할 수 있습니다.
JavaScript가 ASPX 페이지에있는 경우 일시적으로 작업하는 가장 쉬운 방법은 다음과 같습니다. 요소의 clientID 속성을 사용하십시오. 예를 들어, JS를 통해 참조하려는 TextBox1이라는 컨트롤이있는 경우 :
var textbox = document.getElementById('<%= TextBox1.ClientID %>');
다른 팁
요소 만들기 runat="server"
내부에있는 ASP.NET 명명 컨테이너에 따라 해당 요소의 클라이언트 측 ID를 변경합니다. 그래서 당신이 사용하는 경우 document.getElementById
요소를 조작하려면 .NET에 의해 생성 된 새 ID를 전달해야합니다. 살펴보십시오 ClientId 생성 된 ID를 얻으려면 속성 ... JavaScript에서 다음과 같이 인라인으로 사용할 수 있습니다.
var element = document.getElementById('<%=myControl.ClientID%>');
텍스트 상자가있는 경우 :
<asp:TextBox id="txtText" runat="server" />
당신이 사용할 수있는:
var textBox=document.getElementById('<%=txtText.ClientID %>');
모든 WebControl은 동일한 ClientID 속성을 노출시킵니다.
모든 질문에 대한 답변이 있었지만 추가 정보를 게시 할 것이라고 생각했습니다 ...
Rick Strahl 은이 문제에 대한 상당한 내용의 작업을 제공했습니다.
http://www.west-wind.com/weblog/posts/252178.aspx
고맙게도 ASP .NET 4.0이 도착하면 클라이언트 ID가 무엇인지 정확하게 지정할 수 있습니다!
http://www.codeproject.com/kb/aspnet/asp_net4_0clientidfeature.aspx