添加一个原型函数

时间:2015-01-13 21:19:38

标签: javascript

我创建了一个函数并添加到原型中,但是当我尝试从元素中调用它时,错误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 **** //

1 个答案:

答案 0 :(得分:5)

getElementsByTagName获取一个nodeList,而一个nodeList不是HTMLCanvasElement的实例,因此没有添加的属性。

尝试获取元素

var canvas= document.getElementsByTagName("canvas")[0];

此外,您应该将event传递给函数

var coords = canvas.relMouseCoords(event);

FIDDLE