DOM2
1.添加事件:
方式 : xxx.addEventListener(‘click’, function() {}, false)
参数说明:
参数1:要处理的事件名(注意:名称前面没有on) //事件类型(click,mousedown,mousemove,scroll,load)
参数2:作为事件处理程序的函数 //事件发生时做的事情
参数3:是否在捕获阶段处理,true为捕获阶段,false为冒泡阶段,默认为false
好处:可以为一个元素的同一事件,添加多个处理程序,事件触发时调用的顺序,就是处理程序添加的顺序
var div = document.querySelector('div');
div.addEventListener('click', function () {
console.log('div:click(捕获阶段)');
}, true);
2.删除事件:
方式:xxx.removeEventListener(‘click’, function () {}, false)
参数说明:参数1:要删除的事件处理的事件名//事件类型
参数2:删除的事件处理程序//函数名称
参数3:是否在捕获阶段删除事件(true捕获阶段,false冒泡阶段,默认为false)
注意: 1.删除事件时,第二个参数必须是函数名,不能是匿名函数
2.删除的事件与添加的事件必须在同一个阶段。(都是捕获或都是冒泡)。
functionaaa () {
console.log('div:click又发生了(捕获阶段)');
}
div.addEventListener('click', aaa, true);
div.removeEventListener('click', aaa, true);
3.特点:
- 可以捕获阶段处理事件
- 可以为同一个元素的同一个事件重复添加处理程序(DOM0后添加的会将先添加的覆盖)
- IE8不兼容
- this就是addEventListener前边的元素
键盘事件
键盘事件的target,是页面上获得焦点的元素
div没有默认焦点,可以加上属性tabindex<div tabindex="8"></div>
onkeydown
当用户按下任意键时触发。如果按住不放,会重复触发
window.onkeydown = function(evt){
console.log('onkeydown',evt.keyCode)
}
- 每个按键都有自己的编码(不是字符编码),evt.keyCode输出的就是这个编码
- 当按下按键时,该事件会连续触发,即摁住不放时
-
onkeypress
当用户按下字符键时触发。如果按住不放,会重复触发
window.onkeypress = function(evt){
console.log('onkeypress,keyCode',evt.keyCode);
console.log('onkeypress,charCode',evt.charCode);
}
charCode是按下按键所输出的字符编码//keyCode同样输出的是字符编码
- 非字符按键,不触发该事件
- 按键按住时,会不断触发该事件
onkeyup
当用户释放键盘上的键时触发
按住按键时,只有在按键抬起时触发一次window.onkeyup = function(evt){
console.log('onkeyup,松了键');
}
事件触发顺序
文本框中事件的触发顺序
1.keydown
2.keypress
3.文本框发生变化
4.keyup ```javascript var input = document.querySelector(‘input’) input.onkeydown = function(evt){ alert(‘input:onkeydown,keycode’,evt.keyCode) console.log(‘onkeydown’, evt.keyCode); }//第一个弹出这个框
input.onkeypress = function(evt){ alert(‘input:onkeypress,charCode’,evt.charCode) console.log(‘onkeypress,charCode’,evt.charCode) }//第二个弹出这个框
input.onkeyup = function(){ alert(‘input:onkeyup’) } ```
按键信息
1.event.keyCode
2.特殊按键组合:
shift 当按下时,event.shiftKey === true
ctrl 当按下时,event.ctrlKey === true
alt 当按下时,event.altKey === true