获取滚动位置和滚动最大尺寸不起作用的函数

时间:2015-04-30 00:24:34

标签: javascript

我有以下函数,该函数是从分配给DIV的onscroll事件中调用的。

它无法正常工作。当页面处于最大滚动位置时,我最终得到以下值: scrollTop = 55 offsetHeight = 529

当我检查具有触发该函数的onscroll事件的DIV时,我看到以下计算值: 206.667px

我注意到如果我调整浏览器窗口的大小,offsetHeight值会改变。但是,我也注意到这个值小于身体标签本身的大小。

我很困惑。当页面位于页面底部时,顶部和最大值如何不相等?任何人都知道我错过了什么?

仅供参考 - 我也尝试过scrollHeight和clientHeight;他们似乎也提供了不准确的价值观,至少基于我的期望。

function scrollPos(id){
    var top = document.getElementById(id).scrollTop;
    var max = document.getElementById(id).offsetHeight;
    document.getElementById('scrollTest').innerHTML = 'top: '+top+'<br>max: '+max;
}

2 个答案:

答案 0 :(得分:1)

评论过于冗长,但引用MDN:

  

Element.scrollTop属性获取或设置像素数   元素的内容向上滚动。元素的scrollTop   是元素顶部到顶部距离的度量   可见内容。

  

HTMLElement.offsetHeight只读属性是。的高度   元素包括垂直填充和边框,以像素为单位   整数。

这两个传达了相当不同的东西,你为什么期望它们是一样的?

答案 1 :(得分:1)

In file included from /Users/travis/build/spacedrabbit/SRRandomUser/Random Strangers/SRRandomUser/SRRandomUser/SRRandomUserAPIManager.h:10:
In file included from /Users/travis/build/spacedrabbit/SRRandomUser/Random Strangers/SRRandomUser/../../Pods/Headers/Public/FSNetworking/FSNConnection.h:36:
/Users/travis/build/spacedrabbit/SRRandomUser/Random Strangers/SRRandomUser/../../Pods/Headers/Public/FSNetworking/FSNData.h:42:18: error: expected a type
+ (id)withImage:(UIImage*)image jpegQuality:(CGFloat)quality fileName:(NSString*)fileName;
                    ^
/Users/travis/build/spacedrabbit/SRRandomUser/Random Strangers/SRRandomUser/../../Pods/Headers/Public/FSNetworking/FSNData.h:42:46: error: expected a type
+ (id)withImage:(UIImage*)image jpegQuality:(CGFloat)quality fileName: (NSString*)fileName;
                                               ^
2 errors generated.

结帐工作it throws the error in SRRandomUserGenerator。请忽略它作为AngularJS指令编写,但概念保持不变。