首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 匿名函数function(e)中参数e的问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iori_wen
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-05 17:44:45 楼主
    HTML code
    <body> <div onclick="alert(1)"> <div onclick="alert(2)"> <div onclick="alert(3)"> <div onclick="alert(4)"> <div onclick="alert(5)"> <input id="oo" value="button" type="button" onclick="alert(6)"> </div> </div> </div> </div> </div> </body>

    JScript code
    <script> var arrLayer = [2,5] var ok =0 var pan =false var obj=document.getElementById("oo") function init(layer){ while (obj!=document.body){ obj=obj.parentNode ok++ for(var i=0;i<layer.length;i++) { if(ok==layer[i]) {pan=true} } if(pan) {pan=false continue;} else {obj.onclick=function(e){ e=e||event e.returnValue =false}} } } init(arrLayer) </script>



    以上代码中
    obj.onclick=function(e){
          e=e||event
          e.returnValue =false}
    这段代码是匿名传入event对象的意思吗?我理解不了,有谁能深入的讲解下

    因为
    <div>a </div>
    document.getElementById("a").onclick=function(e){
          e=e||event
          e.returnValue =false}
    的时候根本是无效代码,请大侠解答
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syukugai
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 17:55:421楼 得分:0
    这段代码主要是为了处理键盘事件的,在IE中event作为window对象的一个属性可以直接使用,但是在Firefox中却使用了W3C的模型,它是通过传参的方法来传播事件的,也就是说你需要为你的函数提供一个事件响应的接口,在上述函数中,
    eventTag扮演的就是这个角色。
      var event = eventTag||window.event;
      这段代码可以根据浏览器的不同来得到正确的event,并在程序中使用,如果在IE4+下面使用这段代码,因为eventTag为null可以保证 event = window.event,但是如果在Firefox下运行的话则因为手工的给定了eventTag所以 var event = eventTag。根据对这一段代码的分析我们也不难看出可以对doEventThing方法进行如下的改造(因为 javascript允许我们在定义function的时候不明确指出参数的数量):
    function doEventThing(){   
        var event = arguments[0]||window.event;   
        //other code   
    }
     
      在Firefox下arguments[0]在特定的场合(没有显式的指定function参数数量的时候)被做为传播事件的参数来使用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wtcsy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 18:05:152楼 得分:0
    貌似是我写的
    javascript高级程序设计233页
    dom准则说:event对象必须作为唯一的参数传递给事件处理函数
    可以不把参数写出来,直接用 arguments[0] 这个貌似楼上已经说了 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mingxuan3000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 18:24:233楼 得分:0
    好像是禁止onclick事件  或者代码有问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaojing7
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 18:47:274楼 得分:0
    直接
    document.getElementById("a").onclick=function(){
          alert()} ;

    吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syukugai
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 20:20:325楼 得分:0
    e.returnValue =false;

    只在IE下有效,用来取消浏览器的默认操作.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LCKKING
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 20:40:436楼 得分:0
    event是个全局的,具体的说,他是window下的一个对象,是用来记录最近一次所触发的事件
    比如说,你可以通过window.event.srcElement得到触发事件的对象
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved