我正在从这个页面学习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);
提前谢谢,
乔治
答案 0 :(得分:1)
通过快速查看代码,无论滚动如何,abPos都会返回文档中元素的绝对位置。
XY函数返回“实际”位置,滚动位置(即用户滚动了多少像素)已经集成在返回值中。
因此,滚动时,“p”值不会改变,而“x”值确实会改变。
你为什么这么问?从截图中我看不出任何错误。
无论如何,你的意思是垂直滚动,而不是水平滚动。