나는 요소 (패널)를 찾고, 위치를 얻으며, 해당 위치로 페이지를 스크롤하는 자바 스크립트가 있습니다. 버튼 클릭시 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");
}
코드가 ...입니까? – CKKiller