Js获取事件对象代码


Posted in Javascript onAugust 05, 2010

一般做法:

<input type="button" id="test" value="点我测试" /> 
<script type="text/javascript"> 
var testBtn = document.getElementById('test'); 
testBtn.onclick = testFun; 
function testFun(e) 
{ 
var evt = e || window.event; 
alert(evt); 
} 
</script>

或者:
<input type="button" id="test" value="点我测试" /> 
<script type="text/javascript"> 
var testBtn = document.getElementById('test'); 
if(window.addEventListener) 
{ 
testBtn.addEventListener('click', testFun, false); 
} 
else if(window.attachEvent) 
{ 
testBtn.attachEvent('onclick', testFun); 
} 
function testFun(e) 
{ 
var evt = e || window.event; 
alert(evt); 
} 
</script>

返回的值都是 “[object Event]“。
但如果是这种方式呢?
<input type="button" id="test_1" value="点我测试" onclick="testFun_1()" /> 
<script type="text/javascript"> 
function testFun_1() 
{ 
//此处如何获得? 
} 
</script>

“内事不决问百度,外事不决问谷歌”, 此言不虚。搜索了下,答案还真不少,不过大多数雷同(可能是巧合)。
https://3water.com/article/19408.htm
http://www.cnblogs.com/cuixiping/archive/2008/04/13/1150847.html
愚公 的这个文章(貌似转帖)还是颇有见解的。
<input type="button" id="test_1" value="点我测试" onclick="testFun_1()" /> 
<script type="text/javascript"> 
function testFun_1() 
{ 
var evt = getEvent(); 
alert(evt); 
} 
function getEvent(){ 
if(window.event) return window.event; //这里用对象检测更为妥当 
func=getEvent.caller; 
while(func!=null){ 
var arg0=func.arguments[0]; 
if(arg0){ 
if((arg0.constructor==Event || arg0.constructor ==MouseEvent) 
|| (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){ 
return arg0; 
} 
} 
func=func.caller; 
} 
return null; 
} 
</script>

一般来说,很少用到这种嵌入式的写法(js写在html标签中 onclick="testFun_1()"),也不推荐使用这种方法,会造成维护和开发的麻烦。
Javascript 相关文章推荐
jquery 简短几句代码实现给元素动态添加及获取提示信息
Sep 01 Javascript
JQUERY 设置SELECT选中项代码
Feb 07 Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
折叠菜单及选择器的运用
Feb 03 Javascript
vuejs手把手教你写一个完整的购物车实例代码
Jul 06 Javascript
微信小程序getPhoneNumber获取用户手机号
Sep 29 Javascript
vue v-model实现自定义样式多选与单选功能
Jul 05 Javascript
Webpack 4.x搭建react开发环境的方法步骤
Aug 15 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
Dec 11 Javascript
详解JavaScript 高阶函数
Sep 14 Javascript
Selenium执行JavaScript脚本的方法示例
Dec 31 Javascript
zeroclipboard复制到剪切板的flash
Aug 04 #Javascript
jQuery Study Notes学习笔记 (二)
Aug 04 #Javascript
JQuery Study Notes 学习笔记(一)
Aug 04 #Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
Aug 03 #Javascript
基于jquery的让textarea自适应高度的插件
Aug 03 #Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 #Javascript
jQuery的实现原理的模拟代码 -3 事件处理
Aug 03 #Javascript
You might like
从php核心代码分析require和include的区别
2011/01/02 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php防止sql注入的方法详解
2017/02/20 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
[08:40]Navi Vs Newbee
2018/06/07 DOTA
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
python编程开发之日期操作实例分析
2015/11/13 Python
Python算法应用实战之栈详解
2017/02/04 Python
python读写csv文件方法详细总结
2019/07/05 Python
OpenCV 边缘检测
2019/07/10 Python
基于python操作ES实例详解
2019/11/16 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
Python实现分数序列求和
2020/02/25 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
python 如何对logging日志封装
2020/12/02 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
HTML5标签小集
2011/08/02 HTML / CSS
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
解决pytorch-gpu 安装失败的记录
2021/05/24 Python