javascript点位置问题

时间:2010-11-28 06:10:38

标签: javascript html

我正在从这个页面学习javascript示例,我在Windows 7上使用IE 7,

http://nofunc.org/AJAX_Star_Rating

对于这个样本,我对函数document.onmousemove,

的这个陈述感到困惑
var p = abPos($('star' + n))
    , x = XY(e)
    , oX = x.X - p.X
    , oY = x.Y - p.Y; s
tar.num = o.id.substr(4);

我特别困惑的是,如果我向下滚动浏览器水平条(参见下面的屏幕快照),对于第5颗星(我将鼠标移动到第5颗星以测量位置),x.Y减少,但是p.Y永远不会改变。有什么想法是错的吗?

屏幕快照以显示此错误http://i52.tinypic.com/4vhi7c.png

例如,在我向下滚动浏览器水平条之前,对于第5个星,x.Y / p.Y是492/477,但在我向下滚动后,x.Y / p.Y是380/477。

document.body.scrollTop始终为0,即使向下滚动,我也使用了以下警报进行调试。

编辑1:

    document.onmousemove = function (e) {
        var n = star.num;

        alert (event.clientY + ' ' + document.body.scrollTop);
提前谢谢, 乔治

1 个答案:

答案 0 :(得分:1)

通过快速查看代码,无论滚动如何,abPos都会返回文档中元素的绝对位置。

XY函数返回“实际”位置,滚动位置(即用户滚动了多少像素)已经集成在返回值中。

因此,滚动时,“p”值不会改变,而“x”值确实会改变。

你为什么这么问?从截图中我看不出任何错误。

无论如何,你的意思是垂直滚动,而不是水平滚动。