2012-03-18 7 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 is undefined'というエラーが表示されます 。 任意のアイデア関数からプロパティマップを返すタスクを達成する方法。私は何の間違いをしていますか?

+0

、これらの機能の全体的な目的は何ですか?特定のイベントの後にマウスがどこにあるかを知りたいですか?または、マウスの位置に反応する要素があるかどうか試していますか? – natedavisolds

答えて

1

あなたは、この使用してグローバル変数を解決することができ:ちょうどmouseMoveにグローバル変数の現在のカーソル位置を保存

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

+0

警告を使って 'clrpckrTopPos()'によって返された値を調べてみてください。何か異常なものが返ってくる場合は – aurbano

2

currentCursPos何も返されません。
関数内のmousemoveハンドラから戻っても、外部関数自体は何も返しません。

+0

正しく指摘されています。 – GILL

1

を:

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

cursorPosをposに置き換えてください。また、xとyは逆のコンマで囲む必要があります。 – GILL

+0

おっと、 'cursorPos'キャッチに感謝!しかし、引用符はJSONの場合にのみ必要です。純粋なJavaScriptオブジェクト識別子は引用符で囲む必要はありません。 – benesch