学习javaScript必知必会(4)~事件、事件绑定、取消事件冒泡、事件对象
2024-09-04 02:38:47
1、常用的事件:
① onload:页面加载
② onblur: 失去焦点 onfocus: 获取焦点
③ onclick:点击
④ onmouseover:鼠标经过 onmouseout:鼠标离开
⑤ onchange:内容改变
⑥ onsubmit:表单提交
2、绑定事件方式:
(1)行内绑定:
<元素 事件="事件处理程序(函数)">
<script>
function 函数名(){
console.log(this); //行内绑定的this是指向window
}
</script>
(2)动态绑定(用于结构+样式+行为分离的页面):
前提是进行window.load的初始化,在初始化过程中将事件绑定到元素(标签)上
语法:对象.事件 = 事件处理程序
<button id="btn" >按钮</button>
//js文件:通过window.onload 进行初始化,在初始化的过程中将事件动态绑定到元素上
window.onload = function (){
document.getElementById("btn").onclick = function (){
console.log(this);
}
}
(3)事件监听(为一个对象绑定多个事件处理程序)
① ie: attachEvent(type, callback)
type:事件名,例如 onclick、onsubmit、onchange等
callback:事件处理程序(函数)
② 基于w3c模式:attachEventListener(type, callback, [capture])
type:事件名,(没有前缀on)例如 click、submit、change等
callback:事件处理程序(函数)
capture:可选,事件模型(为true是捕捉模式,false是冒泡模式)
//进行ie或w3c的判断
function addEvent(obj, type, callback){
if(window.attachEvent){
obj.attachEvent('on' + type, callback);
}else {
obj.addEventListener(type, callback);
}
}
3、取消事件冒泡:
① ie: window.event.cancelBubble = true;
② w3c: function(event) {//方法的第一个参数是event
event.stopPropagation();
}
//进行ie或w3c的判断
function stopBubble(event){
if(window.event){
window.event.cancelBubble = true;
}else{
event.stopPropagation();
}
}
4、取消默认行为(例如:提交按钮、超链接)
- 有些情况需要取消掉默认行为,例如资料填写不完整,将提交按钮的提交行为进行取消
//方法一:return false取消
<form method="get" action="#" onsubmit="return false"> //取消表单提交
//方法二:ie:window.event.returnValue = false;
// w3c: event.preventDefault();
<form method="get" action="#" >
<input type="text" name="name" id="name"/>
<input type="submit" value="提交" id="submit"/>
</form>
<script>
window.onload = function (){
document.getElementById('submit').onclick = function (event) {
if(document.getElementById('name').value===''){
if(window.event){
window.event.returnValue = false; //ie
}else{
event.preventDefault(); //w3c
}
}
}
}
</script>
5、事件对象(事件发生时产生的对象,该对象包含了该事件的所有信息)
■ 获取事件对象:
① ie8 :window.event
② ie9、w3c: function(event){ } //函数的第一个形参
最新文章
- rsync 笔记之 list
- PHPUnit整合ThinkPHP的库TPUnit
- 性能分析工具-PerfView
- ZK 最少限度加载页面js文件
- c# webapi发布到windows server 2008 r2 iis上提示404错误
- 转载:有关SQL server connection Keep Alive 的FAQ(2)
- eclipse启动tomcat错误:A Java Exception has occurred(转)
- [改善Java代码] 避免instanceof非预期结果
- asp.net mvc4 Controller与Action执行过程的研究(学习笔记)
- FireMonkey隐藏任务栏图标
- PHP实现对MongoDB的基础操作
- C#5.0支持的await格式
- python __name__ 变量的含义
- Mha-Atlas-MySQL高可用
- go语言的条件语句和循环语句
- Python爬虫2-检测编码(使用chardet)
- SVN简明教程
- 如果django里的视图是类(CBV),应该如何写Url的测试用例?
- CmsEasy 5.5 cut_image 代码执行漏洞
- 维护直线的线段树:Bzoj1568,Bzoj3938(Uoj88)
热门文章
- .NET 云原生架构师训练营(建立系统观)--学习笔记
- Tornadofx学习笔记(4)——IconTextFx开源库,整合5000+个字体图标
- CF729A Interview with Oleg 题解
- shell 文件读取批量处理
- 关于c++、go、nodejs、python的计算性能测试,结果令人惊讶
- 使用iframe内嵌PC网站实现高度自适应
- UDP&;串口调试助手用法(3)
- 【LeetCode】743. Network Delay Time 解题报告(Python)
- 【LeetCode】688. Knight Probability in Chessboard 解题报告(Python)
- (原创)WinForm中莫名其妙的小BUG——RichTextBox自动选择字词问题