javaScript를 사용하여 runat =“Server”ASP 요소에 액세스하려면 어떻게해야합니까?

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

  •  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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top