javascript 鼠标事件的问题

d是个div,在setTimeout匿名函数中,为什么无法获取到e.clientX?//找不到成员?在setTimeout匿名函数的外面,声明一个变量varx=e.cli... d是个div,
在setTimeout匿名函数中,为什么无法获取到e.clientX?// 找不到成员?
在setTimeout匿名函数的外面,声明一个变量var x = e.clientX,非得这样才能获取?

<script type="text/javascript">
var d = document.getElementById("d");
document.onmousemove = function(e){
var e = e || window.event;
//var x = e.clientX;
setTimeout(function(){
alert(e.clientX) //找不到成员
//alert(x);
} , 150)
}
</script>
展开
 我来答
网海1书生
科技发烧友

2012-09-27 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12310 获赞数:26224

向TA提问 私信TA
展开全部
event对象只有在宿主对象直接触发的事件中才有效的(比如onmousemove事件),而setTimeout匿名函数与事件本身是没有任何关系了,所以event对象也就失效了,自然也就无法获取它的clientX属性了。而在事件中把event对象的clientX属性赋值给一个变量则性质就不同了,这个变量在赋值后就跟event对象没关系了,在setTimeou中自然就能够获取了。
badboy4539
2012-09-27 · TA获得超过219个赞
知道小有建树答主
回答量:329
采纳率:100%
帮助的人:205万
展开全部
你要把传到function中吧
setTimeout(function(e){
alert(e.clientX) //找不到成员
//alert(x);
} , 150)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
akkk111ki
2012-09-27
知道答主
回答量:11
采纳率:0%
帮助的人:1.6万
展开全部
上边说的不对,e放入setTimeout也会出错,执行匿名函数时事件句柄的处理已经结束,它只是设置了定时而已,那时在运用事件Event对象的属性当然找不到,而var x = e.clientX;将值保存在变量中,所以150毫秒之后匿名函数能够访问变量x。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
diaosu
2012-09-27 · 纸上得来终觉浅,绝知此事要躬行
diaosu
采纳数:2853 获赞数:6168

向TA提问 私信TA
展开全部
没有错误呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式