Javascript 向原型添加一个函数

Javascript 向原型添加一个函数,javascript,Javascript,我创建了一个函数并添加到原型中,但当我尝试从元素调用它时,似乎未定义的错误不是函数 function relMouseCoords(event){ var totalOffsetX = 0; var totalOffsetY = 0; var canvasX = 0; var canvasY = 0; var currentElement = this; do{ totalOffsetX += currentElement.offsetLeft - currentElement.scr

我创建了一个函数并添加到原型中,但当我尝试从元素调用它时,似乎未定义的错误不是函数

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 **** //

getElementsByTagName
获取节点列表,节点列表不是
HTMLCanvasElement
的实例,因此没有添加的属性

尝试获取一个元素

var canvas= document.getElementsByTagName("canvas")[0];
此外,还应将
事件
传递给函数

var coords = canvas.relMouseCoords(event);

getElementsByTagName
获取节点列表,节点列表不是
HTMLCanvasElement
的实例,因此没有添加的属性

尝试获取一个元素

var canvas= document.getElementsByTagName("canvas")[0];
此外,还应将
事件
传递给函数

var coords = canvas.relMouseCoords(event);

是因为您将relMouseCoords声明为一个带有一个参数的函数,但未传递任何参数吗?@Heron,您可以调用函数,而不传递参数。函数中的变量将只是
未定义的
@PatrickEvans不知道这一点。谢谢,因为您将relMouseCoords声明为带有一个参数的函数,但没有传递任何参数?@Heron,您可以调用函数而不传递参数。函数中的变量将只是
未定义的
@PatrickEvans不知道这一点。谢谢