2010-06-25 4 views
0

로드시 .NET Panel 컨트롤을 숨기고 첫 번째로드시 코드 숨김 JavaScript setTimeout() 함수를 호출합니다. 저장 버튼을 클릭하면 패널이 표시되도록 설정 한 다음 setTimeout() 함수가 호출 된 지점에서 페이지를 다시로드합니다. 기본적으로 저장을 클릭하고 "Details Saved"가 표시된 패널을 3 초 동안 봅니다. 사라집니다.asp.net 외부 JavaScript 파일에서 Control.ClientID를 찾지 못했습니다.

문제는 외부 JavaScript 파일에서 _pDivAlert.ClientID를 찾을 수 없다는 것입니다. 디버깅했으며 null을 반환합니다. 코드가 .aspx 페이지의 태그에있는 경우에만 작동합니다. 클라이언트 ID를 HideControl() 함수에 전달하거나 외부 JS 파일에서 ClientID를 찾을 수있는 방법에 대한 제안 사항은 무엇입니까?

내 코드는 어떤 것이 있습니까?

<script language="javascript" src="Forms.js" type="text/javascript"></script> 

<body onload="ToggleAlert()"> 
<form id="form1" runat="server"> 
<script type="text/javascript"> 
    //alert the user that the details were saved 
    function HideControl() { 
     var control = document.getElementById('<%=_pDivAlert.ClientID %>'); 
     if(control != null) 
      control.style.display = 'none'; 
    } 
    function ToggleAlert() { 
     setTimeout("HideControl()", 3000); 
    } 
</script> 

나는 또한 ToggleAlert() 호출 내에서 클라이언트 ID를 전송 시도했다, 그러나 그것은 작동하지 않았다 :

<body onload="ToggleAlert('<%=_pDivAlert.ClientID %>')"> 

외부 JS를 :

function HideControl(_c) { 
var control = _c; 
if (control != null) 
    control.style.display = 'none'; 
} 
function ToggleAlert(_c) { 
    setTimeout("HideControl(_c)", 3000); 
} 

답변

1

당신이 보여줄 수있는 마크 업은 패널과 코드 숨김 어디에 숨 깁니 까?

Visible 속성을 false로 설정하고 스타일 display을 none으로 설정하는 것과는 차이가 있습니다. 첫 번째는 요소를 전혀 렌더링하지 않으므로 찾고있는 ID로 렌더링 된 것이 없습니다.

편집 : 시간 초과시 HideControl을 호출하는 것 같습니다. 이것은 문자열이 아닌 함수 여야합니다.

시도는 setTimeout에 문자열을 통과 할 때, 단지 명확성을 위해

function ToggleAlert(_c) { 
    setTimeout( 
     function() { 
      HideControl(_c); 
     }, 3000); 
} 

하고,이를 평가 한 후 실행합니다. eval이 생성하는 코드 덩어리는 ToggleAlert 메서드와 다른 범위에서 실행되므로 _c을 사용할 수 없습니다.

편집 : 실제로 컨트롤에 대한 참조를 가져와야합니다. id 문자열을 ToggleAlert으로 전달하면이 문자열은 HideControl으로 전달됩니다.이 문자열은 객체가 아닌 문자열을 필요로합니다.

function HideControl(_c) { // _c is the id of the element 
    var control = document.getElementById(_c); 
    if (control != null) 
     control.style.display = 'none'; 
} 
+0

답장을 보내 주셔서 감사합니다. HideControl() 함수를 만들었고 이제 외부 JS에서 컨트롤 ID를보고 있습니다. 하지만 지금 디버깅 할 때 "control.style.display = 'none'"의 "style"은 "undefined"입니다. – Barryman9000

+0

귀하의 의견에있는 문제를 해결하기 위해 내 게시물을 편집했습니다. – lincolnk

+0

니스! 그랬지, 고마워! – Barryman9000

관련 문제