1
function smtMouseMove(e){
    smtMouseCoordsX=e.pageX;
    smtMouseCoordsY=e.pageY;
    smtTipPosition();
}

function smtTipPosition(e){
    var thePosX=e.pageX+20;
    smtTip.css("left",thePosX);

    var thePosY=smtMouseCoordsY+20;
    smtTip.css("top",thePosY);

}

これがある場合:var thePosX=e.pageX+20;パラメーターeが未定義であるというエラーが発生します。しかし、私が書くなら、var thePosX=smtMouseCoordsX+20;すべてが大丈夫です。ここで何が恋しいですか?

4

3 に答える 3

2

関数宣言で、パラメーターeを送信するように要求しています。

function smtTipPosition(e) {}

ただし、実行時にパラメータを送信しているわけではありません。

function smtMouseMove(e){
    smtMouseCoordsX=e.pageX;
    smtMouseCoordsY=e.pageY;
    smtTipPosition();
               // ^ Right here, you have to send the parameter 'e' too
}

このようなものを実装すると、問題が解決するはずです。

function smtMouseMove(e){
    smtTipPosition(e);
}

function smtTipPosition(e){
    var thePosX=e.pageX+20;
    smtTip.css("left",thePosX);

    var thePosY=smtMouseCoordsY+20;
    smtTip.css("top",thePosY);

}

通常、イベントオブジェクトeを指します。何らかのイベントまたは関数によって開始または渡される必要があります。あなたの場合も、関数とその両方がその実行のためにイベントオブジェクトを必要とします。setMouseMovesmtTipPosition

簡単な例を見てみましょう

$("a").click(function(e) {
    //Here `e` will hold the event object of the page, when any `a` on the page will be clicked
    console.log(e.pageX); //Calling this will give the x coordinates of mouse position on the page, when the `a` was clicked
});
于 2012-09-23T10:32:48.057 に答える
0

eはイベントオブジェクトに対するものであり、イベントオブジェクトはメソッドまたはイベント(onmouseover、onmousoutイベントなど)に関連付けられています。

パラメータsmtTipPosition();関数がありません。イベントオブジェクトを渡すか、位置の値をsmtTipPosition()関数に送信します

function smtMouseMove(e){
    smtMouseCoordsX=e.pageX;
    smtMouseCoordsY=e.pageY;
    smtTipPosition(smtMouseCoordsX,smtMouseCoordsy);
}

パラメータ化された値を使用して、位置を使用してcssを設定します。

function smtTipPosition(posX, PosY){
    var thePosX=posX+20;
    smtTip.css("left",thePosX);

    var thePosY=PosY+20;
    smtTip.css("top",thePosY);

}
于 2012-09-23T10:36:50.723 に答える
0

他の人がすでに言ったように、次のようにマウスの位置を2番目の方法に渡す必要があります。

function smtMouseMove(e){
    smtTipPosition({ x: e.pageX, y: e.pageY });
}

function smtTipPosition(point) {
    smtTip.css("left", e.x + 20);
    smtTip.css("top", e.y + 20);
}
于 2012-09-23T10:41:30.640 に答える