我希望“getPosition”计算出的坐标可用于其他函数,这样我就不必编写在 getPosition 中使用 x 和 y 的其余代码。
我知道我可以使用类似 return {posX: x, posY: y}; 的东西从函数中检索这两个值,但我不知道如何使它们在 getPosition 之外可用。
document.addEventListener("DOMContentLoaded", init, false);
function init()
{
var canvas = document.getElementById("canvas");
canvas.addEventListener("mousedown", getPosition, false);
}
function getPosition(event)
{
var x = new Number();
var y = new Number();
var canvas = document.getElementById("canvas");
if (event.x != undefined && event.y != undefined)
{
x = event.x;
y = event.y;
}
else // Firefox method to get the position
{
x = event.clientX + document.body.scrollLeft +
document.documentElement.scrollLeft;
y = event.clientY + document.body.scrollTop +
document.documentElement.scrollTop;
}
x -= canvas.offsetLeft;
y -= canvas.offsetTop;
}
最佳答案
创建一个闭包并将变量 x 和 y 以及使用它们的函数放在那里:
(function(){
var _x = 0;
var _y = 0;
document.addEventListener("DOMContentLoaded", init, false);
function init()
{
var canvas = document.getElementById("canvas");
canvas.addEventListener("mousedown", getPosition, false);
}
function getPosition(event)
{
var x = new Number();
var y = new Number();
var canvas = document.getElementById("canvas");
if (event.x != undefined && event.y != undefined)
{
x = event.x;
y = event.y;
}
else // Firefox method to get the position
{
x = event.clientX + document.body.scrollLeft +
document.documentElement.scrollLeft;
y = event.clientY + document.body.scrollTop +
document.documentElement.scrollTop;
}
x -= canvas.offsetLeft;
y -= canvas.offsetTop;
//Save x and y for later
_x = x;
_y = y;
}
})();
关于javascript - 如何返回事件监听器调用的函数的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19867780/