2012-08-06 2 views
0

나는 요소 (패널)를 찾고, 위치를 얻으며, 해당 위치로 페이지를 스크롤하는 자바 스크립트가 있습니다. 버튼 클릭시 javascript 함수가 호출됩니다. 패널이 Visible = true이면 모든 것이 제대로 작동합니다. 그러나 페이지로드시 패널은 사용자에게 보이지 않아야합니다. 패널이 Visible = false 일 때 패널에 페이지가 없으므로 javascript 함수가 작동하지 않습니다. 패널이 style = "display : none"인 패널이 사용자에게는 보이지 않지만 위치는 실제 위치가 아닙니다. 패널이 style = "visibility : hidden"일 때 패널이 존재하지만 실제 위치에 있지만 패널에 숨겨진 큰 공백이 페이지에 있습니다.asp page + javascript : 요소를 숨기고 실제 위치를 얻는 방법?

페이지에서 빈 공간없이 패널을 보이지 않게 만들고 페이지에서 실제 위치를 얻는 방법은 무엇입니까?

편집 : 내 솔루션 + 코드 - 잘

, 나는 그것을 작동하게,하지만 더 나은 솔루션이 있어야합니다. 여기에 코드

<script type="text/javascript"> 
     function elementPosition(obj) {    
      var curleft = 0, curtop = 0; 
      if (obj.offsetParent) { 
       curleft = obj.offsetLeft; 
       curtop = obj.offsetTop; 

       while (obj = obj.offsetParent) { 
        curleft += obj.offsetLeft; 
        curtop += obj.offsetTop; 
       } 
      } 
      return { x: curleft, y: curtop }; 
     } 

     function ScrollToControl(id) { 
      jid = id; 
      var elem = document.getElementById(jid); 
//here I set the display = 'block', and I also set this in button_click event 
//when I didn't set it also in button_click event, I get the right panel position 
//but the panel remains invisible 
      elem.style.display= 'block'; 
      var scrollPos = elementPosition(elem).y; 
      window.scroll(0, scrollPos); 
      } 
      </script> 

페이지에있는 버튼입니다 :

<asp:Button ID="btnClientDossiers_EMAIL" runat="server" CssClass="button" Enabled="False" 
          Text="EMAIL" OnClick="btnClientDossiers_EMAIL_Click" /> 

코드 숨김

Page_Load 
    { 
//how can I dynamically get the ctl00_ContentPlaceHolder? 
// Or will the client name of plEMAIL always start with ctl00_ContentPlaceHolder? 
    btnClientDossiers_EMAIL.Attributes.Add("onclick", " return 
    ScrollToControl('ctl00_ContentPlaceHolder_plEMAIL');"); 
    } 

    protected void btnClientDossiers_EMAIL_Click(object sender, EventArgs e) 
      { 
       plEMAIL.Attributes.Add("style", "display:block"); 
      } 
+0

코드가 ...입니까? – CKKiller

답변

0

우리는 당신이 더 도움이 대답을 줄 수 있지만, 난 그래서 당신의 코드를 게시하시기 바랍니다 너가 너가있는 것을 달성 할 수 있을지도 모른가는 1 가지의 방법을 건의하십시오. div (s)가 style="visibility:hidden;"으로 설정된 페이지를로드 한 다음 세로 위치를 요소의 전역 변수 또는 데이터 속성으로 가져온 다음 div 스타일을 즉시 style="display:none;"으로 설정하십시오.

그런 다음 스크롤 기능에서이 위치 값을 사용할 수 있어야합니다.