求助,关于event

ole2005 2007-04-28 02:32:11
当前鼠标坐标为:
X:<span id="mp_x"></span>
Y:<span id="mp_y"></span>
<div id="Container" onmouseover=DisplayMp(event) style="border:1px dashed #ff9900;height:200px;">

</div>
<script type="text/javascript">
window.onload = function(){
DisplayMp = function(event){
document.getElementById("mp_x").innerHTML = event.clientX + "px";
document.getElementById("mp_y").innerHTML = event.clientY + "px";
}
document.getElementById("Container").onmouseover = function(event){
document.getElementById("mp_x").innerHTML = event.clientX + "px";
document.getElementById("mp_y").innerHTML = event.clientY + "px";
}
}
</script>

//----------------------------------------------------------
上面两种写法 前面那种写法没问题
后面那种写法不能正常取到坐标,请问该怎么做?
...全文
432 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ole2005 2007-04-29
  • 打赏
  • 举报
回复
把alert(e.clientX)改成window.status = e.clientX
状态栏下看看,是不是即时取得更新坐标的?
mingxuan3000 2007-04-29
  • 打赏
  • 举报
回复
<div id="testId">abcdefg</div>
<script>
document.getElementById("testId").onmouseover=aa;
function aa(e){
e=e||event;
//e=e.target||e.srcElement;
alert(e.clientX);
}
</script>
muxrwc 2007-04-29
  • 打赏
  • 举报
回复
Object.extend = function (a, b) {
//追加方法
for (var i in b) a[i] = b[i];
return a;
};

Object.extend(Object, {

addEvent : function (a, b, c, d) {
//添加函数
if (a.attachEvent) a.attachEvent(b[0], c);
else a.addEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false);
return c;
},

delEvent : function (a, b, c, d) {
if (a.detachEvent) a.detachEvent(b[0], c);
else a.removeEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false);
return c;
},

reEvent : function () {
//获取Event
return window.event ? window.event : (function (o) {
do {
o = o.caller;
} while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
return o.arguments[0];
})(this.reEvent);
}

});

var reMouse = function (a) {
//获取鼠标位置
var e = Object.reEvent();
return {
x : document.documentElement.scrollLeft + e.clientX,
y : document.documentElement.scrollTop + e.clientY
};
};
ole2005 2007-04-29
  • 打赏
  • 举报
回复
没明白楼上的意思

我的问题是
DisplayMp = function(event){
document.getElementById("mp_x").innerHTML = event.clientX + "px";
document.getElementById("mp_y").innerHTML = event.clientY + "px";
}
这么写在两种浏览器里都是没有问题的.
但是下面这种写法
document.getElementById("Container").onmouseover = function(){
document.getElementById("mp_x").innerHTML = window.event.clientX + "px";
document.getElementById("mp_y").innerHTML = window.event.clientY + "px";
}
应该怎么处理?
adverse 2007-04-28
  • 打赏
  • 举报
回复
ie里event是window的成员,在ff中,是方法的参数。
所以要这样来取
function onmouseover(ev)
{
var e = ev || window.event;//这样来取得event对象
}
上面只是个例子自己根据实际情况改改。
ole2005 2007-04-28
  • 打赏
  • 举报
回复
IE下就搞笑了,经过div边线的时候就触发个事件,否则就是没响应的
FF下是无效的
应该是event传递的问题,不知怎么弄,高手快来
ole2005 2007-04-28
  • 打赏
  • 举报
回复
这个我试过,虽然能得到坐标 但似乎不能即时取得坐标
况且在FF里是报错的window.event has no properties
wyxqjq 2007-04-28
  • 打赏
  • 举报
回复
X:<span id="mp_x"></span>
Y:<span id="mp_y"></span>
<div id="Container" onmouseover=DisplayMp(event) style="border:1px dashed #ff9900;height:200px;">

</div>
<script type="text/javascript">
window.onload = function(){
DisplayMp = function(event){
document.getElementById("mp_x").innerHTML = event.clientX + "px";
document.getElementById("mp_y").innerHTML = event.clientY + "px";
}
document.getElementById("Container").onmouseover = function(){
document.getElementById("mp_x").innerHTML = window.event.clientX + "px";
document.getElementById("mp_y").innerHTML = window.event.clientY + "px";
}
}
</script>

加个window.event就可以了

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧