当前位置: 首页 > news >正文

动态添加js事件

    //表单对象
    function GetObject(Name)
    {
        var inputlist=document.all.tags('input');
        var i=0;
        for(i=0;i<inputlist.length;i++)
        {
            var input=inputlist[i];
            if(input.id.indexOf(Name) !=-1)
            {
                return input;
            }
        }
        return null;
    }

    //设置对象事件
    function setEvent(Object,EventName,EventFunction)
    {
        if(Object ==null)
            return;
        if(window.addEventListener)
        {
            //其它浏览器的事件代码: Mozilla, Netscape, Firefox
            //添加的事件的顺序即执行顺序 //注意用 addEventListener 添加带on的事件,不用加on
            Object.addEventListener(EventName.replace('on',''), EventFunction, false);
        }
        else
        {
            //IE 的事件代码 在原先事件上添加 add 方法
            Object.attachEvent(EventName,EventFunction);
        }
    }

     //失去焦点函数
     function blur()
     {
        var size=lSize.value * 0.3;
        pSize.value=ForDight(size,0);
     }

     //四舍五入函数
    function ForDight(Dight,How)
    {
     var Dight = Math.round (Dight*Math.pow(10,How))/Math.pow(10,How);
     return Dight;
    }

     //执行
     var lSize=GetObject('STNumberTextBox1');
     var pSize=GetObject('STNumberTextBox2');
     setEvent(lSize,'onblur',blur);

 

attachEvent追加事件

object.event = handler;
的方式初始化。这种方式对于 Internet Explorer、Mozilla/Firefox 和 Opera 来说很通用。但是有一个问题就是,这种方式只能一个事件对应一个事件处理过程。如果希望一个事件可以依次执行多个处理过程就不好用了。

但是 Internet Explorer 从 5.0 开始提供了一个 attachEvent 方法,使用这个方法,就可以给一个事件指派多个处理过程了。attachEvent 对于目前的 Opera 也适用。但是问题是 Mozilla/Firefox 并不支持这个方法。但是它支持另一个 addEventListener 方法,这个方法跟 attachEvent 差不多,也是用来给一个事件指派多个处理过程的。但是它们指派的事件有些区别,在 attachEvent 方法中,事件是以 “on” 开头的,而在 addEventListener 中,事件没有开头的 “on”,另外 addEventListener 还有第三个参数,一般这个参数指定为 false 就可以了。

因此要想在你的程序中给一个事件指派多个处理过程的话,只要首先判断一下浏览器,然后根据不同的浏览器,选择使用 attachEvent 还是 addEventListener 就可以了。实例如下:

            if (window.attachEvent) { 
                window.attachEvent("onload", remove); 
            } else if (window.addEventListener) { 
                window.addEventListener("load", remove, false);   
            }             
            function remove() { 
                var div = document.getElementById("divprogressbar"); 
                document.body.removeChild(div); 
            } 

注意:attachEvent 所指派的多个过程的执行顺序是随机的,所以这几个过程之间不要有顺序依赖。另外 attachEvent 和 addEventListener 不仅仅适用于 window 对象,其他的一些对象也支持该方法。

 

带参数设置:

window.attachEvent('onload', function(){changeHeight('参数');});

转载于:https://www.cnblogs.com/zhengjuzhuan/archive/2009/09/12/1565427.html

相关文章:

  • 2003系统管理实战 创建DC 管理用户 备份 批量安装
  • HDU1042 N!
  • [翻译-ASP.NET MVC]Contact Manager开发之旅迭代3 - 验证表单
  • Web Service基本概念
  • 网关(Gateway)--帮你深入理解什么是网关
  • 04. 字符串合并与拆分写法小结
  • Linux下的I/O
  • URLlib2 模拟浏览器header
  • 【原创】用SQL语句删除重复记录的方法总结
  • 软件定义的4-7层服务
  • 实现一个JavaScript验证的Asp.net Helper
  • HTML重构与网页常用工具
  • 国学应用大师翟鸿燊经典语录
  • shell---scp远程传输文件不需要手动输入密码
  • STP生成树协议
  • #Java异常处理
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 2019年如何成为全栈工程师?
  • Bytom交易说明(账户管理模式)
  • const let
  • Create React App 使用
  • echarts花样作死的坑
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Mithril.js 入门介绍
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • spring + angular 实现导出excel
  • 记一次用 NodeJs 实现模拟登录的思路
  • 微信公众号开发小记——5.python微信红包
  • 鱼骨图 - 如何绘制?
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 我们雇佣了一只大猴子...
  • ###STL(标准模板库)
  • #vue3 实现前端下载excel文件模板功能
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $forceUpdate()函数
  • (12)目标检测_SSD基于pytorch搭建代码
  • (java)关于Thread的挂起和恢复
  • (rabbitmq的高级特性)消息可靠性
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (一)Dubbo快速入门、介绍、使用
  • (译)2019年前端性能优化清单 — 下篇
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • *上位机的定义
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET delegate 委托 、 Event 事件
  • .net 设置默认首页
  • .NET性能优化(文摘)
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .Net组件程序设计之线程、并发管理(一)
  • @Autowired多个相同类型bean装配问题