事件

  1. 内联模型、脚本模型,DOM2级模型

        <!--内联模型-->
    <input type="button" value="bt1" onclick="alert('I am 内联模型1');">
    <input type="button" value="bt2" onclick="f();">
    //脚本模型
    <input type="button" value="bt3" id="bt3">
    <script type="text/javascript">
    function f(){
    alert('I am 内联模型2');
    }
    var bt3=document.getElementById('bt3');
    bt3.onclick=function(){
    alert('I am 脚本模型');
    alert(this.tagName);//输出:INPUT
    }
    </script> <input type="button" value="bt1" id="bt1">
    <script type="text/javascript">
    var bt1=document.getElementById('bt1');
    bt1.onclick=function(e){
    var e=e||window.event;//兼容性处理,IE支持window.event
    alert(e);//输出:Object mouseEvent
    // alert(e.type);//输出:click
    }
  2. 事件流:冒泡与捕获
    <div id="box1" style="background:lightgreen;width: 100px;height: 100px;" >
    <input type="button" value="btn1" id="btn1">
    </div>
    <script type="text/javascript">
    <!--事件冒泡,依次触发-->
    var btn1=document.getElementById('btn1');
    var box1=document.getElementById('box1');
    btn1.onclick=function(){alert('btn1 click!');}
    box1.onclick=function(){alert('box1 click!');}
    document.body.onclick=function(){alert('body click!');}
    document.documentElement.onclick=function(){alert('html click!');}
    </script> //取消冒泡
    var e=e || window.event;
    e.stopPropagation();
    //取消冒泡,兼容性处理
    var e=e || window.event;
    if(typeof e.cancelBubble=='undefined'){
    e.stopPropagation();
    }else{
    e.cancelBubble=true;
    }
    }     <!--绑定事件,增加第三个参数为true表示使用事件捕获-->
            var btn1=document.getElementById('btn1');
            var box1=document.getElementById('box1');
            btn1.addEventListener('click',function(){
                alert('btn1 click!');
            },true);
            box1.addEventListener('click',function(){
                alert('box1 click!');
            },true);
            document.body.addEventListener('click',function(){
                alert('body click!');
            },true);
            document.documentElement.addEventListener('click',function(){
                alert('html click!');
            },true);
            document.addEventListener('click',function(){
                alert('document click!');
            },true)
           
  3. btn1.onclick=……等价于 btn.addEventListener(……)
  4. 事件选择
        var btn1=document.getElementById('btn1');
    function handler(e){
    switch(e.type){
    case('click'):alert('clicked!');break;
    case('mouseover'):e.target.style.backgroundColor='red';break;
    case('mouseout'):e.target.style.backgroundColor='';break;
    }
    }
    btn1.onclick=handler;
    btn1.onmouseover=handler;
    btn1.onmouseout=handler;
  5. 事件对象的三个阶段
        var btn1=document.getElementById('btn1');
    btn1.onclick=function(e){
    alert(e.eventPhase);
    }//输出2,目标阶段
    document.body.addEventListener('click',function(e){
    alert(e.eventPhase);
    },true);//输出1,捕获阶段
    document.body.onclick=function(e){
    alert(e.eventPhase);//输出3,冒泡阶段
    }
  6. onload事件
       
    var btn1=document.getElementById('btn1');
    var img1=document.getElementById('img1');
    eventUtil.addHandler(img1,'load',function(e){
    alert(this.src);
    });
  7. 表单验证:    插件:validform
            function check(){
    var un=document.getElementById('username').value;
    var pw=document.getElementById('pw').value;
    var em=document.getElementById('email').value;
    if(!/^[a-zA-Z0-9_]+$/.test(un)){
    alert('用户名:'+un+'不合法!');
    return false;
    }
    if(/^[\s\r\t\n]*$/.test(pw)){
    alert('密码不能为空!');
    return false;
    }
    if(!/^([\w\.\-]+)@([\w\-]+)\.([a-z]{2,4})$/.test(em)){
    alert('邮箱不合法!');
    return false;
    }
    return true;
    }

04_Javascript初步第三天的更多相关文章

  1. verilog阻塞与非阻塞的初步理解(三)

    下面这段源码是因为习惯不好,出现不正确波形的例子. module pwm_division(reset,clkin,clkout); input reset,clkin; output clkout; ...

  2. 04_Javascript初步第二天(下)

    错误对象 try{ aa();//这是一个未被定义的方法 }catch(e){ alert(e.name+":"+e.message);//输出:ReferenceError:aa ...

  3. 04_Javascript初步第一天

    视频来源:麦子学院[看来是麦子的忠实粉丝] 讲师:King我只是想记住对应的中文翻译:Uncaught SyntaxError: missing ) after argument list//属性列表 ...

  4. Rust初步(三):使用atom搭配racer进行rust编程

    在rust.cc社区中有一个关于rust编辑器的讨论(话说很多人要学一个新语言,都会立即考虑编辑器的问题,包括我在内),主要关注的是,智能提示(这个真的太重要了).大家讨论下来有几个选择 1. ecl ...

  5. swift学习初步(三)--控制流操作

    在上一篇博客里面,我谈到了swift里面的一些基本类型以及相关的操作,相信你看了之后一定会觉得其实swift也不难嘛.好吧,这篇博客里面要谈的一些高级操作,可能会让你有点头疼了. 好了,废话不多说了, ...

  6. Jmeter初步使用三--使用jmeter自身录制脚本

    今日,小编在网上看到很多人使用badboy来录制,然后再把jmx脚本弄到Jmeter上做性能测试.这种方法在小编刚用Jmeter时也曾经用过,但是感觉太麻烦了,所以就找了下其它资料.结果,小编偶然发现 ...

  7. 04_Javascript初步第二天(上)

    全局函数 isFinity() - 检测是否是无穷值(+infinity,-infinity,NaN返回false): isNaN() - 检测是否为数值 encodeURI(uri) - 将字符串编 ...

  8. redis 初步认识三(设置登录密码)

    1.cmd 2.cd C:\Program Files\Redis 3.redis-cli.exe -h 127.0.0.1 -a 123456

  9. Jquery Easy UI初步学习(三)数据增删改

    第二篇只是学了加载用datagrid加载数据,数据的增删改还没有做,今天主要是解决这个问题了. 在做增删改前需要弹出对应窗口,这就需要了解一下EasyUi的弹窗控件. 摘自:http://philoo ...

随机推荐

  1. 关于centos启动报错:Failed to start Crash recovery kernel arming的解决方案

    在VMware中安装了centos,重启时报错:Failed to start Crash recovery kernel arming 本质是kdump服务启动失败 先来说一下,什么是kdump K ...

  2. Class对象的创建与使用

    类与Class对象 类是程序的一部分,每个类都有一个Class对象,即每当编写并且编译一个新类的时候就会产生一个Class对象.当程序创建第一个对类的静态成员的引用的时候,会将该类动态加载到JVM中, ...

  3. golang 在 windows 下编译出 linux 二进制可执行文件的软件套装合集 [go 1.7.3环境]

    golang 很好用,不过要把工具链弄完整. 要不你会发现怎么不能编译跨平台的呀? 怎么写代码没提示啊? ... 这一整套弄下来并不容易. 所以精心准备了一套工具方便大家使用. 软件列表如图. 安装顺 ...

  4. dotnet core cli 命令

    1 dotnet new 2 创建code 程序 dotnet new console using System; namespace cli { class Program { static voi ...

  5. PE 001~010

    题意: 001(Multiples of 3 and 5):对小于1000的被3或5整除的数字求和. 002(Even Fibonacci numbers):斐波那契数列中小于等于4 000 000的 ...

  6. Gym100971B Gym100971C Gym100971F Gym100971G Gym100971K Gym100971L(都是好写的题。。。) IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13, 2016

    昨天训练打的Gym,今天写题解. Gym100971B 这个题就是输出的时候有点小问题,其他的都很简单. 总之,emnnn,简单题. 代码: #include<iostream> #inc ...

  7. [国嵌攻略][100][嵌入式Linux内核制作]

    Linux内核制作步骤 1.清除原有配置 make distclean 2.配置内核 选择一个已有的配置文件简化配置 make menuconfig ARCH=arm 3.编译内核 ARCH指明处理器 ...

  8. 自己实现一个each迭代器

    什么是迭代器? 其实就是对一个对象内部进行遍历的方法,比如jquery的each方法,或者原生js的foreach方法. 迭代器的特点 针对迭代器,这里有几个特点: ☑ 访问一个聚合对象的内容而无需暴 ...

  9. 什么是Linux主机?

    Linux主机是基于Linux内核的服务器操作系统配置的主机(常见Linux服务器操作系统如:Redhat,CentOS,Debian,FreeBSD,Ubentu等). Linux主机采用国内功能最 ...

  10. 面试官最爱的volatile关键字

    在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性 ...