我是JS的新手。我沒有使用jQuery,我有一個問題。我創建了一個可變數量的畫布頁面上,都有一個事件偵聽像這樣:HTML5多個Canvases事件偵聽器 - 如何確定哪個畫布遇到過該事件?
for (i=0; i<numberOfCanvases; i++){
var canv = document.createElement("canvas");
canv.addEventListener('click', clickReporter, false);
document.body.appendChild(canv); }
指定的監聽功能clickReporter:
function clickReporter(e){...}
我想使用這個功能來告訴我點擊事件相對的鼠標位置到畫布:
function getMousePos(canvas, evt){
// get canvas position
var obj = canvas;
var top = 0;
var left = 0;
while (obj && obj.tagName != 'BODY') {
top += obj.offsetTop;
left += obj.offsetLeft;
obj = obj.offsetParent;
}
// return relative mouse position
var mouseX = evt.clientX - left + window.pageXOffset;
var mouseY = evt.clientY - top + window.pageYOffset;
return {
x: mouseX,
y: mouseY
};
}
我從本教程中找到:http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/
問題是,它假設只有一個畫布,而且我確實有一個畫布列表,現在放在網頁上,但我想知道,只是給出了clickReporter()函數,是否有一種簡單的方法來確定選擇了哪個畫布?像evt.getCanvas()或evt.getParentCanvas()這樣的函數?
我這麼問是因爲當事件發生時(在許多畫布1鼠標點擊,我要創建在該位置對於僅帆布行動)
我最終使用'this'關鍵字。 e.target和'this'之間有什麼區別嗎?謝謝! – Rohan
'''e.target'''表示一個事件對象的正確,然後'''這個'''在函數的上下文中,指的是你綁定句柄的元素,在這種情況下,它們指向相同OBJ;在另一種情況下,可能不會 –