Javascript 检测鼠标方向

Javascript 检测鼠标方向,javascript,jquery,mouseevent,direction,Javascript,Jquery,Mouseevent,Direction,我正在尝试此代码来检测鼠标方向是向上还是向下: <html> <head></head> <body> <div style="width: 500px; height: 500px; background: red;"></div> </body> </html> var-mY=0; $('body').mousemove(函数(e){ mY=e.

我正在尝试此代码来检测鼠标方向是向上还是向下:

<html>  
    <head></head>
    <body>
        <div style="width: 500px; height: 500px; background: red;"></div>
    </body>
</html>


var-mY=0;
$('body').mousemove(函数(e){
mY=e.pageY;
如果(e.pageY

然而,这段代码不工作是我所期望的。控制台日志始终显示“从顶部”

有什么想法吗


您在比较之前设置了
my=e.pageY
,这意味着比较将始终相等(因此为false)

像这样试试

var mY = 0;
$('body').mousemove(function(e) {

    if (e.pageY < mY) {
        console.log('From Bottom');

    } else {
        console.log('From Top');
    }
    mY = e.pageY;

});
var-mY=0;
$('body').mousemove(函数(e){
如果(e.pageY
e.pageY
始终等于
mY
,因为您在
if
语句之前将
mY
设置为
e.pageY

var mY=0;
var mY = 0;
$('body').mousemove(function(e) {

    // moving upward
    if (e.pageY < mY) {
        console.log('From Bottom');

    // moving downward
    } else {
        console.log('From Top');
    }

    // set new mY after doing test above
    mY = e.pageY;

});
$('body').mousemove(函数(e){ //向上移动 如果(e.pageY
您需要在确定方向后设置
mY
值(以前您是在之前设置的-因此将始终收到特定结果)

代码:

//Values starts at middle of page
var mY = $('window').height()/2;

//Compares position to mY and Outputs result to console
$('body').mousemove(function(e) {
    if (e.pageY < mY) {
        console.log('Going Up');   
    } 
    else {
        console.log('Going Down');
    }
    mY = e.pageY;
});
//值从页面中间开始
var mY=$('window').height()/2;
//将位置与我的进行比较,并将结果输出到控制台
$('body').mousemove(函数(e){
如果(e.pageY

如果使用if/else,它将始终输出“向下”,即使e.pageY==mY

改用2个if语句

var mY = 0;
$('body').mousemove(function(e) {

// moving upward
if (e.pageY < mY) {
    console.log('From Bottom');

// moving downward
}
if (e.pageY > mY) {
    console.log('From Top');
}

// set new mY after doing test above
mY = e.pageY;

});
var-mY=0;
$('body').mousemove(函数(e){
//向上移动
如果(e.pageYmY){
console.log('From Top');
}
//完成上述测试后,设置新的mY
mY=e.pageY;
});

只需从macek复制代码,并将“else”替换为“if(…)”顺便说一句,这是最简单的方法。通过这种方式,您可以检测方向变化:

var tempMouseY=0;
$('body')
.mousemove(function(e) {
    moveY = -(tempMouseY-e.pageY);
    tempMouseY = e.pageY;
    if (moveY<0) {
        console.log('From Bottom');
    } else {
        console.log('From Top');
    }

 });
var tempMouseY=0;
$(“正文”)
.mousemove(函数(e){
moveY=-(tempMouseY-e.pageY);
tempMouseY=e.pageY;

如果(movey)小心删除此处的return语句,否则
mY
在向上移动鼠标后无法设置。为什么当前列出的唯一不起作用的答案是评分最高的答案?
var tempMouseY=0;
$('body')
.mousemove(function(e) {
    moveY = -(tempMouseY-e.pageY);
    tempMouseY = e.pageY;
    if (moveY<0) {
        console.log('From Bottom');
    } else {
        console.log('From Top');
    }

 });