• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • Js不传参数来获取事件对象

    网络   2015/3/20 15:41:07

    一般做法: 

    <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>


    “内事不决问百度,外事不决问谷歌”, 此言不虚。搜索了下,答案还真不少,不过大多数雷同(可能是巧合)。 
    http://www.jb51.net/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()
            var element=evt.srcElement || evt.target  
            alert(element.id)
        }
        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()"),也不推荐使用这种方法,会造成维护和开发的麻烦。

    阅读(896) 分享(0)

    上一篇: 中国联通疑似出现大范围网络故障
    下一篇: JS中callee与caller的用法和应用场景

  • 精彩推荐

    ◆ 导出Excel 格式 mso-number-format
    ◆ JS 银行卡号判断验证
    ◆ StackOverflow网站架构,.NET技术架构解析
    ◆ 移动设备屏幕适配,字体px pt dp的区别?
    ◆ 怎么防止数据库被下载密码不被泄露
    ◆ 58同城沈剑:好的架构是进化来的,不是设计来的
    ◆ 关闭vs2010的托盘提示 "Improve Microsoft Visual Studio performance"
    ◆ CIH病毒作者陈盈豪现状
    ◆ PHP利用mysqli操作数据库方法总结
    ◆ 马云、马化腾、刘强东的童年大揭底!
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。