dom01
事件冒泡:即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档)。
事件捕获:即不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。
事件处理程序:1.HTML处理程序
<body>
<div id="box">
<input type="button" value="按钮" id="btn" onclick="alert(123)"/>
</div>
</body>
javascript和html耦合在一起,改起来比较麻烦,不建议使用的:
function showMessage(){
alert("hello word")
}
</script>
</head>
<body>
<div id="box">
<input type="button" value="按钮" id="btn" onclick="showMessage()"/>
</div>
2.dom0级事件处理程序
较传统的方式:把一个函数赋值给一个事件爱你的处理程序属性用的比较多的方法 简单 夸浏览器的优势
window.onload=function(){
var btn2=document.getElementById('btn2');
btn2.onclick=function(){
alert('这个是dom0级添加的事件')
}
// btn2.onclick=null;
}
<input type="button" value="按钮3" id="btn3"/>
3.dom2级事件处理程序
dom2级事件定义了两种方法:
用于处理指定和删除事件处理程序的操作
addEventListener()和removeEventListner()
接收三个参数:要处理的事件名,作为事件处理程序的函数和布尔值(false事件冒泡,true事件捕获)
window.onload=function(){
var btn3=document.getElementById('btn3');
btn3.addEventListener('click',showMessage,false);
btn3.addEventListener('click',function(){
alert(this.value)
},false);
btn3.removeEventListener('click',showMessage,false);
}
<input type="button" value="按钮3" id="btn3"/>
4.IE事件处理程序
attachEvent()添加事件
detachEvent()删除事件
接收相同的两个参数:事件处理程序的名称和事件处理程序的函数
不使用第三个参数的原因:IE8以及更早的浏览器版本只支持事件冒泡
window.onload=function(){
var btn3=document.getElementById('btn3');
btn3.attachEvent('onclick',showMessage)
}
<input type="button" value="按钮3" id="btn3"/>
5.跨浏览器的事件处理程序
function showMessage(e){
alert(e.type);
}
var eventUtil={
//添加句柄
addHandler:function(element,type,handler){
if(element.addEventListener){//dom二级
element.addEventListener(type,handler,false);
}else if(element.attachEvent){//IE
element.attachEvent('on'+type,handler);
}else{//dom0级
element['on'+type]=handler;//element.onclick===element['onclick'];
}
},
//删除句柄
removeHandler:function(element,type,handler){
if(element.removeEventListener){//dom二级
element.removeEventListener(type,handler,false)
}else if(element.detachEvent){//IE
element.detachEvent('on'+type,handler);
}else{//dom0级
element['on'+type]=null;//element.onclick===element['onclick']
}
}
}
<input type="button" value="按钮3" id="btn3"/>
<script>
var btn3=document.getElementById('btn3');
eventUtil.addHandler(btn3,'click',showMessage);
//eventUtil.removeHandler(btn3,'click',showMessage);
</script>
dom01的更多相关文章
- 004 DOM01
一:说明 1.Js的三个部分 ECMAScripts标准:JS的基本语法 DOM:文档对象模型,操作页面的元素的 BOM:浏览器对象模型,操作浏览器 2.术语 文档:一个页面就是一个文档 元素:页面中 ...
- JS基础语法之DOM01(找标签、改属性样式)
DOM:暂时可以理解为找标签.改样式 1.BOM: 记住location这个就可以: location.href 获得当前页面的URL location.href = "URL" ...
- eCharts_基于eCharts开发的一个多图表页面
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- eCharts_数据过多底部滚动条实现数据展示
效果图: 实现原理: 1.添加dataZoom属性 效果实现代码: <!DOCTYPE html> <html> <head> <meta charset=& ...
- 基于three.js实现特定Div容器的粒子特效封装
本文基于three.js实现特定容器的粒子特效效果,支持用户传入特定的dom对象以及粒子颜色. 效果图 移入库 <script src="jquery-1.11.3.min.js&qu ...
- DOM解析xml学习笔记
一.dom解析xml的优缺点 由于DOM的解析方式是将整个xml文件加载到内存中,转化为DOM树,因此程序可以访问DOM树的任何数据. 优点:灵活性强,速度快. 缺点:如果xml文件比较大比较复杂会占 ...
随机推荐
- Java使用串行编程操作继电器
首先,我们必须建立一个良好的环境,那是,jdk并且tomcat.如果它不必须是web装了! 还有就是配置,也就是默认的comm.jar ,javax.comm.properties , win32co ...
- POJ 2431 Expedition (贪心+优先队列)
题目地址:POJ 2431 将路过的加油站的加油量放到一个优先队列里,每次当油量不够时,就一直加队列里油量最大的直到能够到达下一站为止. 代码例如以下: #include <iostream&g ...
- 【 D3.js 入门系列 --- 10.2 】 你可以拖动地图
我的个人博客是:www.ourd3js.com csdn博客为:blog.csdn.net/lzhlzz 转载请注明出处.谢谢. 本节是结合9.2节 和10节 的内容制作的一个可力学导向的中国地图,用 ...
- NSIS:超级轻量皮肤SkinH
原文 NSIS:超级轻量皮肤SkinH 这虽然是一个其他软件的皮肤控件,不过拿来用到NSIS上还是不错的.控件加皮肤文件只有100多K,可以说是比较难得了! 看一下效果: 代码示例: 01 #皮肤 ...
- Java并发专题 带返回结果的批量任务执行 CompletionService ExecutorService.invokeAll(转)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/27250059 一般情况下,我们使用Runnable作为基本的任务表示形式,但是R ...
- oracle中execute immediate的使用(select/insert/update/delete)(转)
execute immediate的语法如下: execute immediate 'sql'; execute immediate 'sql_select' into var_1, var_2; e ...
- android获取ip和本机的物理地址
<span style="font-size:18px;">/** * 获取ip * * @return */ public static String getLoca ...
- [JavaScript权威指南 [笔记]
对象的比较均是引用的比较.(不可变的原始值和可变的对象引用)this返回调用这个方法的对象通过x!==x来判断x是否为NaNvar max = max_width || preferences.max ...
- 【 D3.js 入门系列 --- 9.1 】 生产饼图
我个人的博客: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处.谢谢. 这一节用 Layout 做一个饼状图.第9节中说过, Layout ...
- 10个devexpress ASPxPivotGrid常见问题
原文:10个devexpress ASPxPivotGrid常见问题 1.DXperience ASPxGridView如何开启lightweight模式 描述:ASPxGridView样式主题中pa ...