整容说文库 > 程序代码 > 教育资讯

点击一下DIV,如果知道当前点击的位置在DIV的什么位置呢?

来源:学生作业帮助网 编辑:整容说文库 时间:2021/01/28 06:38:01 程序代码
点击一下DIV,如果知道当前点击的位置在DIV的什么位置呢?程序代码
点击一下DIV,如果知道当前点击的位置在DIV的什么位置呢?
想知道当前的XY在是在DIV的什么坐标位置上.
<DIV onclick="aa(this)"></DIV>

<script language="javascript">
function aa(obj)
{
    var pos = getAbsolutePosition(obj);
    alert((pos.x - parsePx(obj.style.left)));
    alert((pos.y - parsePx(obj.style.top)));
}

function parsePx(inputstr)
{
    var tempstr = inputstr.replace("px","");
    var tempint = parseInt(tempstr);
    return isNaN(tempint)?0:tempint;
}

function getAbsolutePosition(obj)
{
position = new Object();
position.x = 0;
position.y = 0;
var tempobj = obj;
while(tempobj!=null && tempobj!=document.body)
{
position.x += tempobj.offsetLeft + tempobj.clientLeft;
position.y += tempobj.offsetTop + tempobj.clientTop;
tempobj = tempobj.offsetParent
}
position.x += document.body.scrollLeft;
position.y += document.body.scrollTop;
return position;
}
</script>
虽然很长,但不对,我把DIV设置成absolute时,总是显示同样的值.
哦 不好意思.......... 我理解错误

<DIV onclick="aa(this)"></DIV>

<script language="javascript">
function aa(obj)
{
    alert((window.event.x - parsePx(obj.style.left)));
    alert((window.event.y - parsePx(obj.style.top)));
}

function parsePx(inputstr)
{
    var tempstr = inputstr.replace("px","");
    var tempint = parseInt(tempstr);
    return isNaN(tempint)?0:tempint;
}
ie用offsetX和offsety,firefox用layerX和layerY
上面打错一个是offsetY
你写的时候可以这样写就兼容了ie和firefox
var _offsetX=offsetX || layerX
var _offsetY=offsetY || layerY
程序代码