这是我的问题,我试图在按下鼠标时将新坐标添加到2D数组中,但是我无法找到如何成功访问事件侦听器内的变量的方法。我尝试了几种方法,但是我找不到如何使它起作用的方法。
myGameArea.canvas.addEventListener('click', function(){
var MousesX = event.clientX+55;
var MousesY = event.clientY+55;
}, false);
ConnectionAdd(MouseX,MouseY,Connections,viewH);
这就是它的意思
ReferenceError:未定义MouseX 抽奖
顺便说一句,这是最基本的测试,但它最好地描述了我想做的事情。
答案 0 :(得分:-1)
好的...首先,您忘记在回调中添加{$lookup:
{
from: 'classes', //check this
localField: 'owner',//**String**
foreignField: '_id', //**ObjectId**
as: 'classes'
}
}
参数:
event
第二,您必须移动ConnectionAdd函数 在回调中。不仅因为在该回调之外无法访问变量MouseX和MouseY,而且主要是因为该函数还必须异步执行,因此在触发该回调时,而不是紧接在事件侦听器定义之后。
myGameArea.canvas.addEventListener('click', function (event) {
var MousesX = event.clientX+55;
var MousesY = event.clientY+55;
}, false);
ConnectionAdd(MouseX,MouseY,Connections,viewH);
答案 1 :(得分:-2)
只需在click事件外部定义它们,就可以像这样在内部设置它们:
var MousesX = 0
var MousesY = 0
document.getElementById('demo').addEventListener('click', function(e) {
MousesX = e.clientX + 55;
MousesY = e.clientY + 55;
console.log(MousesX)
console.log(MousesY)
}, false);
document.getElementById('demo2').addEventListener('click', function(e) {
console.log(MousesX)
console.log(MousesY)
}, false);
<p id="demo">asdf</p>
<p id="demo2">demo2 first click is zeros clicks will be what was stored on the last demo click</p>