function getposition(obj) {
var r = new Array();
r['x'] = obj.offsetLeft;
r['y'] = obj.offsetTop;
while (obj = obj.offsetParent) {
r['x'] += obj.offsetLeft;
r['y'] += obj.offsetTop;
}
return r;
}这个方法我试过了,有bug 如果在input 的外面再加一层div,并且input的所在的范围超出了div div设置了滚动条,所算的的坐标就会出现偏差
var r = new Array();
r['x'] = obj.offsetLeft;
r['y'] = obj.offsetTop;
while (obj = obj.offsetParent) {
r['x'] += obj.offsetLeft;
r['y'] += obj.offsetTop;
}
return r;
}这个方法我试过了,有bug 如果在input 的外面再加一层div,并且input的所在的范围超出了div div设置了滚动条,所算的的坐标就会出现偏差
var t = 0; while (x) { t += x.offsetTop; x = x.offsetParent; }
var l = 0; while (x) { l += x.offsetLeft; x = x.offsetParent; }
function getposition(obj) {
var r = new Array();
r['x'] = obj.offsetLeft;
r['y'] = obj.offsetTop;
while (obj = obj.offsetParent) {
r['x'] += obj.offsetLeft;
if (obj.scrollLeft) {
r['x'] -= obj.scrollLeft;
} r['y'] += obj.offsetTop;
if (obj.scrollTop) {
r['y'] -= obj.scrollTop;
}
}
return r;
}
var r = new Array();
var e=obj,E=e;
var x=e.offsetLeft;
var y=e.offsetTop;
while (e=e.offsetParent) {
var P=e.parentNode;
while (P!=(E=E.parentNode)) {
x-=E.scrollLeft;
y-=E.scrollTop;
}
x+=e.offsetLeft;
y+=e.offsetTop;
E=e;
}
r['x'] = x;
r['y'] = y;
return r;
}这是我找到的,分享一下