2012-12-20 2 views
0

내 document.getElementById 함수가 알고있는 값에 null을 반환합니다. 특히 시도 :document.getElementById를 사용하여 외부 JavaScript 파일의 양식 유효성 검사

//in an external .js file 
var UserName = document.getElementById('<%=_username.ClientID%>'); 

그리고 요소 id 값이 null로 인해 발생하지 않는 몇 가지 조건을 사용하여 테스트합니다. 나는 여기에 사용자 컨트롤 파일에 _username을 정의

... 
<fieldset class="login"> 
    <legend class="login">Login</legend> 
    <label for="<%=_username.ClientID%>"> 
     User Name:</label> 
    <asp:TextBox ID="_username" runat="server" CssClass="login" /> 
    <label for="<%=_password.ClientID%>"> 
     Password:</label> 
    <asp:TextBox ID="_password" runat="server" CssClass="login" TextMode="Password" /> 
    <br /> 
    <span class="response"> 
     <asp:Literal ID="_response" runat="server" /></span>   
    <asp:Button ID="_login" runat="server" Text="Login"/> 
</fieldset> 

나는 나의 페이지에서 getElementById의 사용을 필요로하지 않는 간단한() 함수를 테스트하여 자바 스크립트 파일을 듣고 확인했습니다. 당신이 참 말의 나머지 부분을 가정

+0

js 파일에 asp.net 코드가 있습니까? js 파일은 asp.net에 의해 구문 분석됩니까? – Musa

+1

@Musa JS 파일은 ASP.NET에서 파싱되지 않습니다. –

답변

0

, 문제는 DOM이 준비되기 전에

var UserName = document.getElementById('<%=_username.ClientID%>'); 

실행지고 있다는 가능성이 높습니다. 이 스크립트를 body 섹션의 맨 끝으로 이동하여이 실행 전에 돔이 준비되었는지 확인하십시오.

<script type='text/javascript'> 
     // rest of script 
     var UserName = document.getElementById('<%=_username.ClientID%>'); 
     // rest of script 
    </script> 
</body> 
+0

다른 스레드에서 비슷한 응답을 읽었지만 외부 스크립트 파일로이 작업을 수행하려고합니다. HTML의 머리 부분에서 src를 호출합니다. 여전히 DOM 문제가 발생합니까? – Nibirue

+0

@Nibirue - 이것에 대해서는 확실하지 않지만 위와 같이 여러분의 몸 끝까지 스크립트 태그를 옮길 수 있다고 생각합니다.

0

즉, 귀하의 제목은 "외부 자바 스크립트 파일"말했다. <%= %> 표기 JS 파일 만 ASPX 또는 ASCX에서 작동하지 않기 때문에

var UserName = document.getElementById('<%=_username.ClientID%>'); 

이 작동하지 않습니다이 외부 자바 스크립트 파일에있는 경우.

+0

이것은 의미가 있지만 _username에 대한 ClientID를 검색하는 대안은 무엇입니까? – Nibirue

+0

ct100_contentplaceholder__username이 아닌 클라이언트에서 정확히 _username이라는 것을 보장 할 수 있다면 -code _username. 그렇지 않으면 위의 코드를 ASP.NET에 넣을 수 있으며 스크립트는 UserName 변수를 참조 할 수 있습니다 (스크립트가 변수 생성 아래에 정의되어있는 한). –