javascript 从函数返回属性Map

42fyovps  于 2023-01-24  发布在  Java
关注(0)|答案(3)|浏览(133)

下面是我的代码:

function currentCursPos(){
$(document).mousemove(function(e){ var pos= {"x":e.pageX,"y":e.pageY}; return pos });
}
function clrpckrTopPos(){
    //var cursorPos={};
    var cursorPos=currentCursPos();
    if(cursorPos.y<$("#colorpickerDiv").height()){return cursorPos.y+$("#colorpickerDiv").height()}
    if(cursorPos.y>$("#colorpickerDiv").height()){return cursorPos.y}//colorpickerDiv2 and colorpickerDiv have same height
}

我得到的错误是:
'cursorPos未定义'
有什么想法如何实现从函数返回属性Map的任务吗?我犯了什么错误?

balp4ylt

balp4ylt1#

currentCursPos不返回任何值。
从函数内部的mousemove处理程序返回并不会使外部函数本身返回任何东西。

ao218c7q

ao218c7q2#

您可以使用全局变量来解决此问题:

var x = 0;
var y = 0;
$(document).mousemove(function(e){ x = e.pageX; y=e.pageY; });
function clrpckrTopPos(){
    if(y<$("#colorpickerDiv").height()){return y+$("#colorpickerDiv").height()}
    if(y>$("#colorpickerDiv").height()){return y}//colorpickerDiv2 and colorpickerDiv have same height
}
o4tp2gmn

o4tp2gmn3#

只需将当前光标位置存储在mouseMove上的全局变量中:

var pos;
$(document).mousemove(function(e) { pos = { x: e.pageX, y: e.pageY }; });

function clrpckrTopPos(){
    if (pos.y < $("#colorpickerDiv").height())
        return pos.y + $("#colorpickerDiv").height();

    if (pos.y > $("#colorpickerDiv").height())
        return pos.y;
}

相关问题