我有一个2维数组。 我试图在我的Mousemove jquery函数INSIDE我的Canvas函数中访问它。当我这样做时,我得到以下错误:
未捕获的TypeError:无法读取属性' 0'未定义的
function Canvas(_canvas) {
this.pixels = new Array();
for (var i = 0; i<this.canvas.width; i++) {
var row = new Array();
for (var j=0; j<this.canvas.height; j++) {
row.push(i*j);
}
this.pixels.push(row);
}
$("#" + _canvas).mousemove(function(e){
var offset = $(this).offset();
console.log(this.pixels[parseInt(e.clientX-offset.left)][parseInt(e.pageY-offset.top)]);
});
};
我的数组可以从我的Canvas函数中的任何其他函数正确访问,除了Jquery函数。有什么想法吗?
由于
答案 0 :(得分:0)
将this
别名加入that
以避免实例与事件提升元素之间的事件处理程序出现歧义:
function Canvas(_canvas) {
var that=this;
this.pixels = new Array();
for (var i = 0; i<this.canvas.width; i++) {
var row = new Array();
for (var j=0; j<this.canvas.height; j++) {
row.push(i*j);
}
this.pixels.push(row);
}
$("#" + _canvas).mousemove(function(e){
var offset = $(this).offset();
console.log(that.pixels[parseInt(e.clientX-offset.left)][parseInt(e.pageY-offset.top)]);
});
};