高手进来看下为什么通过计算显示高度的时候会间歇性出现大片的空白

winapp 2005-12-21 10:40:43
为了吧版权信息等等页脚信息显示在每个页面,我用.NET做了个控件(其实就是个装了些相关信息的TABLE),每次把它加载到页面最后,请看代码片断
<TABLE id=TablePageFoot style="WIDTH:100%;height:expression(document.body.offsetHeight-this.offsetTop-this.height)" cellSpacing=0 cellPadding=0 border=0>
这样写的,想通过expression(document.body.offsetHeight-this.offsetTop-20)来计算出这个table的高度,用来填充页面内容不够浏览器一屏的情况;如果页面内容刚够一屏或者大于一屏,那么这个TABLE的宽度就是20
一般情况下运行正常,可是有时候会出现TABLE的HIGHT很宽的情况,出现大片空白,刷新一下又回复正常了,而且是间歇性出现的。
请问可能是什么原因呢?有截图,如果要我发过来
...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbhbhbhbhb1021 2005-12-21
  • 打赏
  • 举报
回复
如果是稳定的错误,那就容易了。
就因为是间歇性的,才不好判断,不会是哪个分支有问题吧。
还有JS的报错不准,至少有些电脑有的时候在左下脚不报错。
你在这个BODY的onload事件中加个函数看看,把
document.body.offsetHeight-this.offsetTop-this.height
这些值都分别打出来看看是什么东西。
或是在你这个<table>结束了之后弹出来看看
winapp 2005-12-21
  • 打赏
  • 举报
回复
不对哦,首先是第一次进入页面就有这个错误,应该不是缓存问题。
2是没有JAVASCRIPT错误提示,而且这个是间歇性出现的并且刷新下就没了,如果是JAVASCRIPT错误,该是稳定的错误啊。
麻烦两位大哥再帮我想想
winapp 2005-12-21
  • 打赏
  • 举报
回复
我试试先
hbhbhbhbhb1021 2005-12-21
  • 打赏
  • 举报
回复

我觉得可能是哪个地方的JS出错,而这里的JS是在你的那个TABLE之前,而执行到
document.body.offsetHeight-this.offsetTop-this.height
这个时候由于前面的JS出错,而不执行,所以会出错。
你把
IE——INTERNET选项——高级——显示没个脚本的错误信息选上,再出现这个错误的时候看看有没有提示错误
tigerwen01 2005-12-21
  • 打赏
  • 举报
回复
可能是页面缓存所至,使用no-cahe试试。
winapp 2005-12-21
  • 打赏
  • 举报
回复
我输出了,document.body.offsetHeight永远是一个定值,只和显示器分辨率有关,在1024×768的情况下是625,出错的时候TablePageFoot.offsetTop=1184,但是我把这个值this.offsetTop写死为1184,结果并不出错,看来这种间歇性出错和程序无关了,是环境,比如是浏览器问题吧?
hbhbhbhbhb1021 2005-12-21
  • 打赏
  • 举报
回复
You can determine the location, width, and height of an object by using a combination of the offsetLeft, offsetTop, offsetHeight, and offsetWidth properties. These numeric properties specify the physical coordinates and dimensions of the object relative to the object's offset parent.
这里都是相对于其父元素的,要想得到准确的
给你个例子
<script language=javascript>
function showObject(e)
{
t=e.offsetTop;
while(e=e.offsetParent){
t+=e.offsetTop;
}
alert(t);
}
</script>
<table border="1">
<tr>
<td>
<a id="a" onclick="javascript:showObject(this)" >1Label</a><br/>
</td>
</tr>
<tr>
<td>
<a id="b" onclick="javascript:showObject(this)" >1Label</a><br/>
</td>
</tr>
</table>
winapp 2005-12-21
  • 打赏
  • 举报
回复
我发现当页面有滚动条的时候document.body.offsetHeight居然是小于TablePageFoot.offsetTop这个的,那这个table的HIGHT就是个负数了,怎么回事啊?请高手给解释一下document.body.offsetHeight和object.offsetTop的准确含义,还有帮我想想为什么会出现这种负数的情况

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧