在addEventListener内部更改变量

时间:2018-08-08 19:25:28

标签: javascript variables addeventlistener

这是我的问题,我试图在按下鼠标时将新坐标添加到2D数组中,但是我无法找到如何成功访问事件侦听器内的变量的方法。我尝试了几种方法,但是我找不到如何使它起作用的方法。

myGameArea.canvas.addEventListener('click', function(){
        var MousesX = event.clientX+55;
        var MousesY = event.clientY+55;
    }, false);
ConnectionAdd(MouseX,MouseY,Connections,viewH);

这就是它的意思

  

ReferenceError:未定义MouseX       抽奖

顺便说一句,这是最基本的测试,但它最好地描述了我想做的事情。

2 个答案:

答案 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>