20分悬赏:js控件坐标(一定要兼容IE和火狐)

来源:百度知道 编辑:UC知道 时间:2024/05/25 01:26:36
请问一下用javascript怎么样才能得到控件(如hidden、div、span等)的坐标呢?一定要支持火狐,以下我写了段代码但是在火狐运行x、y坐标为0了。
s=document.getElementById("hidden1");
while(s.offsetParent){
x+=s.offsetTop;
y+=s.offsetLeft;
m=s.offsetParent;
}
alert(x);
alert(y);
请各位大虾们伸出你的援助之手,解救于我于水火之中吧!
其实我的想法很简单通过<input type="hidden" id="hidden1">得到它的坐标上述代码已经实现了就是不支持火狐浏览器!

尊敬的用户,您好!很高兴为您答疑。
  您的问题主要是在IE和非IE内核(火狐浏览器)下offsetParent、offsetTop、offsetLeft等属性的计算机制不同所致。要想达到兼容效果,您只要人为地对浏览器做一下判断并加以区分即可,您可以参考以下的示例代码:
  var div = document.getElementById("hidden1");
var top = div.offsetTop;
var parent = div.parentNode;
while(parentNode!=null&&parent!=document.body){
top += (parentNode.offsetTop!=null)?parentNode.offsetTop:0;
parent = parent.parentNode;
}
  希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。

getAbsoluteLeft = function(obj){
//获取指定元素左上角的横坐标(相对于body)
/*
obj | 指定的元素对象
*/
var selfLeft = 0;
var element = obj;
while(element){
selfLeft = selfLeft + element.offsetLeft;
element = element.offsetParent;
};
return selfLeft;
}

getAbsoluteTop = function(obj){
//获取指定元素左上角的纵坐标(相对于body)
/*
obj | 指定的元素对象
*/
var selfTop = 0
var element = obj;
while(element){
selfTop = selfTop + element.offsetTop;