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

正如其他人已经说过的,您必须将鼠标位置传递给第二种方法,如下所示:

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 回答