我想抓住onmousemove
的事件并将其发送到mouseMoveOnCanvas
函数。
在mouseMoveOnCanvas
的功能中我试图获得:ev.currentTarget.offsetLeft
。
我试着做下一件事:
document.getElementById('canvas_1234').onmousemove = (function (ev) {
if (ev != null) {
canvas_id = 'canvas_1234';
return function () {
mouseMoveOnCanvas(ev);
//MouseOverColor(currentTd);
}
}
})();
但ev
始终为空。
我知道我可以用jquery做到这一点:
$('canvas[id^="canvas_"]').live('mousemove', function (ev) {..}
但我想用javascript做。
任何帮助表示赞赏!
答案 0 :(得分:1)
你不应该这样使用闭包。删除它,它应该工作。
document.getElementById('canvas_1234').onmousemove = function (ev) {
if (ev != null) {
canvas_id = 'canvas_1234';
return function () {
mouseMoveOnCanvas(ev);
//MouseOverColor(currentTd);
}
}
};
正在发生的事情是闭包是自己调用函数(在加载时)而不是由事件调用。此外,您还没有在参数上传递任何内容 - 像这样:
(function(ev) { console.log(ev); })("Hi");
另一点是,没有理由为什么要归还匿名,因为你没有从中返回任何东西。为什么不呢?
return mouseMoveOnCanvas(ev);