可能重复:
在JavaScript中,您可以扩展DOM吗?
我正在尝试向Element添加方法和属性。它没有列为全局类。我可以像这样扩展String:
String.prototype.dosomething = function { ... };
我尝试像这样做(它更大,这是基本的):
function $id(str){
this.element = document.getElementById(str);
return element;
}
var myElem = $id('myId'); // WORKS !!!
$id.prototype.dosomethig = function ( ... };
var myValue = $id('myId').dosomething(); // DOESN'T WORK !!!
我尝试了其他方法,但问题总是相同的,当我尝试扩展类时,它不起作用。有没有一种方法可以避免这种情况?我知道jQuery可以做到这一点,但我想做自己的 - 如果他们能做到,我也可以……对吗?
编辑: 以下是在Safari和Firefox中已经工作的代码……
Element.prototype.pos = function(){
var curleft = this.offsetLeft;
var curtop = this.offsetTop;
var scrleft = this.scrollLeft;
var scrtop = this.scrollTop;
var pElement = pElementScr = this.offsetParent
while(pElement){
curleft += pElement.offsetLeft;
curtop += pElement.offsetTop;
pElement = pElement.offsetParent;
}
while(pElementScr){
scrleft += pElementScr.scrollLeft;
scrtop += pElementScr.scrollTop;
pElementScr = pElementScr.offsetParent;
}
return {x:this.offsetLeft, y:this.offsetTop};
}
它可以确定一个div在很多其他div内部的位置。在解决了我的库中的许多其他问题后,我将尝试在IE8中进行测试。