如何返回事件侦听器调用的函数的值
How do I return the values of a function that's called by an event listener?
我希望"getPosition"计算的坐标可用于其他函数,这样我就不必在getPosition中编写使用x和y的其余代码。
我知道我可以使用类似 return {posX: x, posY: y} 的东西来从函数中检索这两个值,但我不知道如何在 getPlace 之外使它们可用。
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;
}
})();
相关文章:
- 如何在侦听器中调用变量
- CSS + jQ插件阻止AJAX调用/事件侦听器工作
- 如何从函数引用元素(从事件侦听器调用)
- API Google Maps Javascript在上下文菜单中调用事件侦听器
- Rally App SDK 2.0:在rallymultiobjectpicker重新筛选存储中由托管侦听器调用vali
- 在侦听器内部调用函数时出现问题(onClick)
- F:Ajax onerror 在侦听器之前调用
- 事件侦听器不会在IE中被调用 - 这是怎么回事
- 提交表单后未调用 OnDemandGrid Dojo dgrid-select 事件侦听器
- 事件侦听器调用函数后,代码的执行在哪里继续
- 点击侦听器如何调用另一个活动
- 如何返回事件侦听器调用的函数的值
- 从具有事件侦听器的对象调用函数
- ReactJS:在 JQuery 事件侦听器函数中调用 'this'
- 在侦听器函数 (Javascript) 中调用方法时引用错误
- 如何使用 jQuery 将设置事件侦听器推迟到 ajax 调用和渲染完成后
- 补间.js添加事件侦听器后不调用调用函数
- 如何在方法中添加事件侦听器时调用 removeEventLisener 并在 JavaScript 中的全局函数中调用
- 调用事件侦听器 - 两种方式之一起作用,有什么区别
- 如何添加在调用 tinymce get 函数时触发的事件侦听器