Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 得到鼠标位置返回不工作?_Javascript_Css - Fatal编程技术网

Javascript 得到鼠标位置返回不工作?

Javascript 得到鼠标位置返回不工作?,javascript,css,Javascript,Css,从唯一答案编辑的代码 var mouseX, mouseY; var what = "none"; var mouse = this.mouse; canvas.addEventListener("mousemove", function(e) { if(e.offsetX) { mouseX = e.offsetX; mouseY = e.offsetY; } els

从唯一答案编辑的代码

    var mouseX, mouseY;
    var what = "none";
    var mouse = this.mouse;
    canvas.addEventListener("mousemove", function(e) {
        if(e.offsetX) {
            mouseX = e.offsetX;
            mouseY = e.offsetY;
        }
        else if(e.layerX) {
            mouseX = e.layerX;
            mouseY = e.layerY;
        }

        if(mouse == "x" || mouse == "mouseX" || mouse == "mousex") {
            what = "x";
        } else if(mouse == "y" || mouse == "mouseY" || mouse == "mousey"){
            what = "y";
        }
        if(what == "x") {
            console.log(mouseX);
            return mouseX;
        } else if(what == "y") {
            return mouseY;
        }
    });
现在它仍然返回“未定义”

这是我的代码,由于某种原因它不会返回。(它都在一个函数“getMousePos”中),而my console.log不起作用

console.log(getMousePos(canvas, "x"));
它只返回未定义的。有人知道吗


编辑:代码“console.log(mouseX);”不返回任何内容

getMousePos
仅绑定eventHandler,它尚未注册任何鼠标移动。实际上,它甚至没有
return
语句(只有mouseMove有)

相反,您可能希望为
mouseX
mouseY
实现并返回一个Getter-方法,然后在发生一些移动后,在控制台中检查它们。或者,您可以将它们简化为全局变量,这样您就可以使用

console.log(mouseX);
我猜你想做什么:
如果要读取当前鼠标位置,必须先绑定eventHandler。首先创建全局变量mouseX和mouseY:

var mouseX, mouseY;
其次,绑定事件处理程序(可能在
窗口内。onload

这将跟踪鼠标的位置,并使mouseX和mouseY保持最新


我希望,这对我有帮助。

此外,本网站上没有其他问题对我有帮助。我四处搜索,没有人遇到问题。this.mouse是什么?this.mouse是一个在调用函数时定义为“x”或“y”的鼠标变量。getMousePos(canvas,/*(this.mouse)*/);你不能这样做。您正在设置一个事件侦听器(异步),然后将鼠标位置返回给事件处理程序。这将不起作用…您应该只使用事件侦听器一次(可能在名为
init
的函数中,或者在构造函数中,如果这是一个类)。您没有遇到问题。问题是,您甚至没有从
getMousePos
返回鼠标位置,也没有
return
语句。其次,您不能从函数外部访问
mouseX
,因为它不是全局的。第三,似乎您正试图在绑定事件处理程序的同时读取鼠标位置,这是行不通的;编辑后发到你的回答同样,如果我在那里输入console.log,它确实会给我正确的位置,但我想问的是,为什么返回是未定义的,因为正如我所写的那样,没有任何返回。嗯,console.log在轮到我之前打印的很好。
canvas.addEventListener("mousemove", function(e) {

        if(e.offsetX) {
            mouseX = e.offsetX;
            mouseY = e.offsetY;
        }
        else if(e.layerX) {
            mouseX = e.layerX;
            mouseY = e.layerY;
        }
    }
);