首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> XMLWeb >> 正文

JavaScript方法的演变

        再一次扩展,得到了上面的方法,可以调指定方法,也可以传参数了,似乎没问题了,但是在firefox中,event是不能用window.event来取的,必须要传event过去,真麻烦,再改改吧.

        Version 5:

         <script language="javascript" type="text/javascript">
        function SomeClass(el)
        {
            if(typeof(el) == "string")
            {
                el = document.getElementById(el);
            }
            el.onclick = this.GetFunctionWithEvent(this, "ShowEvent", "Hello, Robot!");
        }
        SomeClass.prototype = {
            Show : function()
            {
                alert("Say Hello!");
            },
            ShowAny : function(any)
            {
                alert(any);
            },
            ShowEvent : function(e,any)
            {
              var el = e ? e.target : event.srcElement;
              var x = e ? e.pageX : event.clientX;
              var y = e ? e.pageY : event.clientY;
              alert(any + "\r\nElement : " + el.id + "\r\nPosition : " + x + " | " + y);
            },
            GetFunction : function(Variable, Method, Parameter)
            {
                    return function()
                    {
                        Variable[Method](Parameter);
                    }
            },
            GetFunctionWithEvent : function(Variable, Method, Parameter)
            {
                    return function(e)
                    {
                        Variable[Method](e, Parameter);
                    }
            }
        }
        window.onload = function()
        {
            new SomeClass("btnDemo");
        }
        </script>
        <input type="button" value="Hello" id="btnDemo" />

        这样,你的方法在firefox中也可以用event了,取鼠标的事件源dom就可以这样了:

        var el = e ? e.target : event.srcElement;

        firefox里的event跟ie里的event有啥区别就不用我说了吧.

        最后我又碰到了这么一个问题,如果我在一个element的onclick上要绑定多个事件怎么办呢?

        Version Final:

         <script language="javascript" type="text/javascript">
        function SomeClass(el)
        {
            if(typeof(el) == "string")
            {
                el = document.getElementById(el);
            }
            el.onclick = this.GetFunction(this, "Show|ShowAny", "Hello, Robot!");
        }
        SomeClass.prototype =
        {
            Show : function()
            {
                alert("Say Hello!");
            },
            ShowAny : function(any)
            {
                alert(any);
            },
            GetFunction : function(Variable, Method, Parameter)
            {
                    return function()
                    {
                        if(Method.indexOf("|") > -1)
                        {
                            var MethodArray = Method.split("|");
                            for(var x = 0; x < MethodArray.length; x++)
                            {
                                Variable[MethodArray[x]](Parameter);
                            }
                        }
                        else
                        {
                            Variable[Method](Parameter);
                        }
                    }
            },
            GetFunctionWithEvent : function(Variable, Method, Parameter)
            {
                    return function(e)
                    {
                        if(Method.indexOf("|") > -1)
                        {
                            var MethodArray = Method.split("|");
                            for(var x = 0; x < MethodArray.length; x++)
                            {
                                try
                                {
                                    Variable[MethodArray[x]](e, Parameter);
                                }
                                catch(err)
                                {
                                    continue;
                                }
                            }
                        }
                        else
                        {
                            Variable[Method](e, Parameter);
                        }
                    }
            }
        }
        window.onload = function()
        {
            new SomeClass("btnDemo");
        }
        </script>
        <input type="button" value="Hello" id="btnDemo" />

        这里面使用|来分割方法,加入了event,可以绑定多个方法了,也加入了try...catch...避免一个出错,其它的也跟着一起挂.暂时没能想到升级版了.呵呵.

上一页  [1] [2] [3] 

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航