Javascript:从函数返回属性映射

时间:2012-03-18 16:01:41

标签: javascript javascript-events

这是我的代码`

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未定义'的错误 。 任何想法如何实现从函数返回属性映射的任务。我犯了什么错误?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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
}   

答案 2 :(得分:1)

只需将当前光标位置存储在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;
}