js这个写法为什么错呢?

Lucenedonet 2013-03-08 03:32:19
<a onclick="edit('123','wer',event)">编辑</a> //event 能当参数传递吗?

function edit(a,b,e){
var xx = e.originalEvent.x || e.originalEvent.layerX || 0;
var yy = e.originalEvent.y || e.originalEvent.layerY || 0;
alert(xx); //不会弹出 以上两个语句有错误
}

主要是想获取单击编辑的时候,鼠标左边。以至最终实现在编辑附近弹出一个div。管理员后台使用。
...全文
359 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuwu8ku 2013-03-08
  • 打赏
  • 举报
回复
引用 17 楼 Lucenedonet 的回复:
引用 14 楼 wuwu8ku 的回复:event在IE下是作为window的全局对象使用的,但在非IE下是需要作为参数传递进去的,所以我们经常看到 bind(obj,'click', function(e){ e = e || window.event; //这里传的e是针对非IE浏览器的,window.event是IE下的 var xx = e.x || e.p……
不传的话IE下可以,但是FF下就会报错
Lucenedonet 2013-03-08
  • 打赏
  • 举报
回复
引用 14 楼 wuwu8ku 的回复:
event在IE下是作为window的全局对象使用的,但在非IE下是需要作为参数传递进去的,所以我们经常看到 bind(obj,'click', function(e){ e = e || window.event; //这里传的e是针对非IE浏览器的,window.event是IE下的 var xx = e.x || e.pageX; //这也是兼容写法,IE是x,非IE是pageX }……
那我不传递event 能直接用event.x吗?
CaiKanXP 2013-03-08
  • 打赏
  • 举报
回复
直接在标签中内联绑定事件是可以使用“event”这个变量名的,各个浏览器都支持;而且其实它本身就是你在jQuery中看到的那个“originalEvent”。 利用“||”的写法来兼容不同浏览器,表达式最终的值为第一个非false的值。
引用 13 楼 Lucenedonet 的回复:
还有几个问题,event是可以当作参数传递的?对除了ie也管用吗? 为什么涉及坐标 都是 || 或好几个。
wuwu8ku 2013-03-08
  • 打赏
  • 举报
回复
||的作用就是或,当前面一个为false时会去取后面的那个值,e.x在FF下是undefined,所以就会去取e.pageX,这些都是兼容写法
wuwu8ku 2013-03-08
  • 打赏
  • 举报
回复
event在IE下是作为window的全局对象使用的,但在非IE下是需要作为参数传递进去的,所以我们经常看到 bind(obj,'click', function(e){ e = e || window.event; //这里传的e是针对非IE浏览器的,window.event是IE下的 var xx = e.x || e.pageX; //这也是兼容写法,IE是x,非IE是pageX })
Lucenedonet 2013-03-08
  • 打赏
  • 举报
回复
引用 12 楼 wuwu8ku 的回复:
引用 11 楼 Lucenedonet 的回复: 引用 10 楼 wuwu8ku 的回复:引用 9 楼 Lucenedonet 的回复: 引用 8 楼 wuwu8ku 的回复:而你这边并没有用到jquery的方法,只是原生的onclick绑定,所以无法使用originalEvent 那你是说jquery 中的e 不是event 那要实现这样的功能,怎么写? jquery中 e是……
早遇到你这个明白人就ok了。 还有几个问题,event是可以当作参数传递的?对除了ie也管用吗? 为什么涉及坐标 都是 || 或好几个。
wuwu8ku 2013-03-08
  • 打赏
  • 举报
回复
引用 11 楼 Lucenedonet 的回复:
引用 10 楼 wuwu8ku 的回复:引用 9 楼 Lucenedonet 的回复: 引用 8 楼 wuwu8ku 的回复:而你这边并没有用到jquery的方法,只是原生的onclick绑定,所以无法使用originalEvent 那你是说jquery 中的e 不是event 那要实现这样的功能,怎么写? jquery中 e是封装了event并做了些加……
var xx = e.x || e.pageX; 就可以了
Lucenedonet 2013-03-08
  • 打赏
  • 举报
回复
引用 10 楼 wuwu8ku 的回复:
引用 9 楼 Lucenedonet 的回复: 引用 8 楼 wuwu8ku 的回复:而你这边并没有用到jquery的方法,只是原生的onclick绑定,所以无法使用originalEvent 那你是说jquery 中的e 不是event 那要实现这样的功能,怎么写? jquery中 e是封装了event并做了些加工,你这边要获取的是什么参数?
主要是想获取单击编辑的时候,鼠标左边。以至最终实现在编辑附近弹出一个div。管理员后台使用。 获取单击时候的鼠标 x y坐标?
wuwu8ku 2013-03-08
  • 打赏
  • 举报
回复
引用 9 楼 Lucenedonet 的回复:
引用 8 楼 wuwu8ku 的回复:而你这边并没有用到jquery的方法,只是原生的onclick绑定,所以无法使用originalEvent 那你是说jquery 中的e 不是event 那要实现这样的功能,怎么写?
jquery中 e是封装了event并做了些加工,你这边要获取的是什么参数?
Lucenedonet 2013-03-08
  • 打赏
  • 举报
回复
引用 8 楼 wuwu8ku 的回复:
而你这边并没有用到jquery的方法,只是原生的onclick绑定,所以无法使用originalEvent
那你是说jquery 中的e 不是event 那要实现这样的功能,怎么写?
wuwu8ku 2013-03-08
  • 打赏
  • 举报
回复
而你这边并没有用到jquery的方法,只是原生的onclick绑定,所以无法使用originalEvent
wuwu8ku 2013-03-08
  • 打赏
  • 举报
回复
这是jquery封装的属性 jquery对function(e)里的e做了封装,所以有originalEvent
Lucenedonet 2013-03-08
  • 打赏
  • 举报
回复
引用 5 楼 wuwu8ku 的回复:
因为原生的js里根本就没originalEvent这个属性,e.originalEvent是undefined,再去下一级找属性必然报错
但是我在jquery里面是可以的。此外我也引用了jquery。 $('#map').bind('click', function(e) { var xx = e.originalEvent.x || e.originalEvent.layerX || 0; var yy = e.originalEvent.y || e.originalEvent.layerY || 0; $('#small').css('top', yy + 305); $('#small').css('left', xx + 23); $('#small').show(); });
wuwu8ku 2013-03-08
  • 打赏
  • 举报
回复
因为原生的js里根本就没originalEvent这个属性,e.originalEvent是undefined,再去下一级找属性必然报错
Lucenedonet 2013-03-08
  • 打赏
  • 举报
回复
引用 2 楼 lin_long 的回复:
亲,你这个写法。 <a onclick="edit(this)" cid="123" tid="123" ttitle="event">编辑</a> function edit(TheMessage){ $(TheMessage).attr("cid"); $(TheMessage).attr("tid"); $(TheMessage).attr("ttitle"); ……
还有你这个this只是传递了a这个对象,而不是单击事件对象。 还有,请先看清楚要实现的功能。
Lucenedonet 2013-03-08
  • 打赏
  • 举报
回复
引用 1 楼 lin_long 的回复:
亲,你这个写法。 <a onclick="edit(this)" cid="123" tid="123" ttitle="event">编辑</a> function(TheMessage){ $(TheMessage).attr("cid"); $(TheMessage).attr("tid"); $(TheMessage).attr("ttitle"); } 这样子试试 ……
你这样写主要是完成不了功能。 怎么获取单击时候的 鼠标坐标?
lin_long 2013-03-08
  • 打赏
  • 举报
回复
亲,你这个写法。 <a onclick="edit(this)" cid="123" tid="123" ttitle="event">编辑</a> function edit(TheMessage){ $(TheMessage).attr("cid"); $(TheMessage).attr("tid"); $(TheMessage).attr("ttitle"); }
lin_long 2013-03-08
  • 打赏
  • 举报
回复
亲,你这个写法。 <a onclick="edit(this)" cid="123" tid="123" ttitle="event">编辑</a> function(TheMessage){ $(TheMessage).attr("cid"); $(TheMessage).attr("tid"); $(TheMessage).attr("ttitle"); } 这样子试试

87,904

社区成员

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

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