2012-03-18 74 views
0

这里返回酒店的地图是我的代码`的Javascript:从功能

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

+0

什么是这些功能的整体意图是什么?你想知道某个事件发生后鼠标的位置?或者你是否想要对鼠标位置作出反应? – natedavisolds 2012-03-18 16:29:27

回答

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 
} 
+0

我在上面的代码中使用了这段代码。这里clrpckrTopPos()似乎不起作用:$(“#colorpickerDiv”)。css({“left”:($(this).offset()。left)+40,“top”:clrpckrTopPos()}); – GILL 2012-03-18 16:38:52

+0

尝试使用警报检查'clrpckrTopPos()'返回的值,以防万一它返回奇怪的东西 – aurbano 2012-03-18 16:45:19

2

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

+0

正确指出。 – GILL 2012-03-18 16:13:12

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; 
} 
+0

您应该用pos替换cursorPos。此外,x和y应该包含在引号之间。 – GILL 2012-03-22 20:20:38

+0

哎呀,感谢'cursorPos' catch!但引号仅用于JSON。纯JavaScript对象标识符不需要用引号引起来。 – benesch 2012-03-22 23:24:07