ASP Page + JavaScript:如何隐藏元素并获取其真实位置
asp page + javascript: how to hide an element and get it real position?
我有一个javascript,它找到一个元素(面板),获取它的位置,然后将页面滚动到那个位置。javascript 函数在单击按钮时调用。当面板可见=真时,一切都很好;但是在页面加载时,面板必须对用户不可见。当面板为 Visible = false 时,javascript 函数不起作用,因为页面上不存在该面板。当面板 style="display:none" 时,它存在,对用户不可见,但它的位置不是它的真实位置。当面板 style="可见性:隐藏"时,面板存在,位于真实位置,但页面上有一个很大的空白区域,面板隐藏在其中。
如何使面板对用户不可见,页面上没有空白,并获得其在页面上的真实位置?
编辑:我的解决方案 + 代码 -
好吧,我让它工作了,但必须有更好的解决方案。这是代码
<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");
}
请发布您的代码,以便我们为您提供更有用的答案,但我会建议一种方法,您可以实现您所追求的目标。尝试加载将div 设置为 style="visibility:hidden;"
的页面,然后将它们的垂直位置放入元素的全局变量或数据属性中,然后立即将div 的样式设置为 style="display:none;"
。
然后,您应该能够在滚动函数中使用这些位置值。
相关文章:
- React - 从 DOM 元素获取组件以进行调试
- 如何使用 JQuery 从相对元素获取 html 文本
- 从同一域上的 iframe 中的元素获取值
- 使用本机 Javascript 从 DOM 元素获取选择器字符串
- 使用jquery从另一个元素获取使用id的输入的id
- 如何从角度元素获取编译的节点值
- 如何为不同的元素获取不同的父类
- 从 jQuery 中的子元素获取父 tr 元素
- 当浮点部分为空时,从 JQuery 中的输入元素获取数字值不起作用
- 从 XML 元素获取文本
- 从音频元素获取音频样本
- 从所选元素 html 上方的元素获取属性值
- 使用 jQuery.data 从 dom 元素获取布尔值
- 如何通过jquery从某个元素获取部分文本
- 从输入元素获取表单和表单数据对象
- 从动态元素获取挖空视图的大小
- 从中继器循环中显示的子自定义元素获取正确的上下文.奥蕾莉亚
- 如何使用 JavaScript 或 JQuery 从输入类型=文件 html 元素获取文件名
- 从父元素获取 ID 并将它们放在数组中
- 尝试从选项元素获取 HTML