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;
}
}
);