现在要求在点击文本框时,获取文本框的坐标,需要相对文本框的位置来显示信息。
思路就是,绑定文本框的click 事件,一旦有点击就触发,去调用clickevent 函数执行计算。
$('#txt_m').bind('click', clickevent);
//计算控件的坐标
function clickevent(event){
var t,a;
a = document.getElementById(this.id);
t = a.offsetTop;
l = a.offsetLeft;
while(a.tagName != "BODY")
{
a = a.offsetParent;
t = t + a.offsetTop;
l = l+ a.offsetLeft;
}
alert("Top:"+t+" , Left:"+l);
}
这样写在除了IE7的浏览器上都能正常执行,但是IE7上就会报错,提示信息为:SCRIPT5007: 无法获取未定义或 null 引用的属性“offsetTop” 。
在360浏览器的 兼容模式下 也无法正常运行,360兼容模式用的内核是IE8,但是默认文档模式为IE7,所以也会出现:无法获取未定义的错误。修改为其他文档模式就能正常运行了。
只能修改为:
$('#txt_m').bind('click', clickevent);
//计算控件的坐标
function clickevent(event){
var e = document.getElementById(this.id);
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("Top:"+t+" , Left:"+l);
}