我创建了一个函数并添加到原型中,但是当我尝试从元素中调用它时,错误undefined不是函数。
function relMouseCoords(event){
var totalOffsetX = 0;
var totalOffsetY = 0;
var canvasX = 0;
var canvasY = 0;
var currentElement = this;
do{
totalOffsetX += currentElement.offsetLeft - currentElement.scrollLeft;
totalOffsetY += currentElement.offsetTop - currentElement.scrollTop;
}
while(currentElement = currentElement.offsetParent)
canvasX = event.pageX - totalOffsetX;
canvasY = event.pageY - totalOffsetY;
return {x:canvasX, y:canvasY}
}
HTMLCanvasElement.prototype.relMouseCoords = relMouseCoords;
function onDocumentMouseMove( event ) {
event.preventDefault();
var canvas= document.getElementsByTagName("canvas");
coords = canvas.relMouseCoords(); // **** undefined is not a function **** //
答案 0 :(得分:5)
getElementsByTagName
获取一个nodeList,而一个nodeList不是HTMLCanvasElement
的实例,因此没有添加的属性。
尝试获取元素
var canvas= document.getElementsByTagName("canvas")[0];
此外,您应该将event
传递给函数
var coords = canvas.relMouseCoords(event);