04_Javascript初步第三天
事件
- 内联模型、脚本模型,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
} - 事件流:冒泡与捕获
<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)
- btn1.onclick=……等价于 btn.addEventListener(……)
- 事件选择
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; - 事件对象的三个阶段
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,冒泡阶段
} - onload事件
var btn1=document.getElementById('btn1');
var img1=document.getElementById('img1');
eventUtil.addHandler(img1,'load',function(e){
alert(this.src);
}); - 表单验证: 插件: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初步第三天的更多相关文章
- verilog阻塞与非阻塞的初步理解(三)
下面这段源码是因为习惯不好,出现不正确波形的例子. module pwm_division(reset,clkin,clkout); input reset,clkin; output clkout; ...
- 04_Javascript初步第二天(下)
错误对象 try{ aa();//这是一个未被定义的方法 }catch(e){ alert(e.name+":"+e.message);//输出:ReferenceError:aa ...
- 04_Javascript初步第一天
视频来源:麦子学院[看来是麦子的忠实粉丝] 讲师:King我只是想记住对应的中文翻译:Uncaught SyntaxError: missing ) after argument list//属性列表 ...
- Rust初步(三):使用atom搭配racer进行rust编程
在rust.cc社区中有一个关于rust编辑器的讨论(话说很多人要学一个新语言,都会立即考虑编辑器的问题,包括我在内),主要关注的是,智能提示(这个真的太重要了).大家讨论下来有几个选择 1. ecl ...
- swift学习初步(三)--控制流操作
在上一篇博客里面,我谈到了swift里面的一些基本类型以及相关的操作,相信你看了之后一定会觉得其实swift也不难嘛.好吧,这篇博客里面要谈的一些高级操作,可能会让你有点头疼了. 好了,废话不多说了, ...
- Jmeter初步使用三--使用jmeter自身录制脚本
今日,小编在网上看到很多人使用badboy来录制,然后再把jmx脚本弄到Jmeter上做性能测试.这种方法在小编刚用Jmeter时也曾经用过,但是感觉太麻烦了,所以就找了下其它资料.结果,小编偶然发现 ...
- 04_Javascript初步第二天(上)
全局函数 isFinity() - 检测是否是无穷值(+infinity,-infinity,NaN返回false): isNaN() - 检测是否为数值 encodeURI(uri) - 将字符串编 ...
- redis 初步认识三(设置登录密码)
1.cmd 2.cd C:\Program Files\Redis 3.redis-cli.exe -h 127.0.0.1 -a 123456
- Jquery Easy UI初步学习(三)数据增删改
第二篇只是学了加载用datagrid加载数据,数据的增删改还没有做,今天主要是解决这个问题了. 在做增删改前需要弹出对应窗口,这就需要了解一下EasyUi的弹窗控件. 摘自:http://philoo ...
随机推荐
- 如何处理Cookie存储和读取中文乱码问题
存储Cookie for(String str:books){ str=new String(str.getBytes("ISO-8859-1"),"utf-8" ...
- WebGL多模型光照综合实例
原文地址:WebGL多模型光照综合实例 WebGL是一个非常的接近硬件底层的光栅化API, 从非常类似C/C++风格的API调用方式就可以看出来, 习惯了高级语言的我们会觉得很不友好,觉得特别 ...
- 【读书笔记】【深入理解ES6】#11-Promise与异步编程
异步编程的背景知识 JavaScript 引擎是基于单线程(Single-threaded)实际循环的概念构建的,同一时刻只允许一个代码块在执行. 所以需要跟踪即将运行的代码,那些代码被放在一个任务队 ...
- [UWP]如何使用Fluent Design System (下)
4. 兼容旧版本 FDS最常见的问题之一是如何与Fall Creators Update之前的版本兼容,其实做起来也挺简单的,ColorfulBox就实现了Creators Update与Fall C ...
- Django--权限组件
创建组件 需求分析: 创建独立app, rbac ##注意: app创建后需要注册到setting.py中 INSTALLED_APPS = [ 'django.contrib.admin', 'dj ...
- I2S协议
(一)I2S总线概述: 音响数据的采集.处理和传输是多媒体技术的重要组成部分.众多的数字音频系统已经进入消费市场,例如数字音频录音带.数字声音处理器.对于设备和生产厂家来说,标准化的信息传输结构可以提 ...
- CountDownLatch源码解析
一.CountDownLatch介绍 CountDownLatch是在jdk1.5被引入的,它主要是通过一个计数器来实现的,当在初始化该类的构造函数时,会事先传入一个状态值,之后在执行await方法后 ...
- vijos 1557:bzoj:1413: [ZJOI2009]取石子游戏
Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行,两人轮流操作,每次操作者都可以从 ...
- Codeforces Round #301 (Div. 2)(A,【模拟】B,【贪心构造】C,【DFS】)
A. Combination Lock time limit per test:2 seconds memory limit per test:256 megabytes input:standard ...
- Git的简单的基本使用
前言: 接触了Android Studio,自然是知道了Github这个网站,这个网站有许多大神们做的开源库,我们只需要简单地引入就是可以使用到这些开源库从而实现酷炫的效果,最近也是刚接触到Git的使 ...