js事件
事件:
在某一时刻,用户(在页面)做了某一件事,给出的反馈
事件的三要素:
1.事件源
2.事件类型
3.事件处理函数
dom 0级事件绑定 事件源.on + 事件类型 = 事件处理函数、
弊端: 无法绑定多个同类型的事件,后边新写的事件,会覆盖掉原有的事件
dom 2级事件绑定(事件监听) 事件源.oddEventListener('事件类型',事件处理函数,第三个参数时可选的)
<style>
div{
width: 100px;
height: 100px;
background-color: antiquewhite;
}
</style>
<div></div>
var oDiv = document.querySelector('div');
oDiv.onclick = function(){
console.log(1212);
}
oDiv.onclick = function(){
console.log(111);
}
oDiv.addEventListener('click', function(){
console.log('绑定给div的第一个事件');
})
oDiv.addEventListener('click', function(){
console.log('绑定给div的第二个事件');
})
表单事件
文本框:<input type="text" id="inp">
<script>
var inp = document.querySelector('#inp');
inp.onfocus = function(){
console.log('当前文本框获得焦点');
}
inp.onblur = function(){
console.log('当前文本框失去焦点');
}
inp.onchange = function(){
console.log('当前文本框内容被更改');
}
inp.oninput = function(){
console.log('当前文本框正在输入内容');
}
</script>
鼠标事件
div{
width: 400px;
height: 400px;
background-color: aqua;
}
.a{
width: 100px;
height: 100px;
background-color: antiquewhite;
}
<div>
<div class="a"></div>
</div>
var oDiv = document.querySelector('div');
oDiv.onclick = function(){
console.log('单击时触发');
}
oDiv.ondblclick = function(){
console.log('双击时触发');
}
oDiv.oncontextmenu = function(){
console.log('右键时触发');
}
oDiv.onmousedown = function(){
console.log(' 鼠标按下时触发');
}
oDiv.onmouseup = function(){
console.log('鼠标抬去时触发');
}
oDiv.onmouseover = function(){
console.log('鼠标移入时触发');
}
oDiv.onmouseout = function(){
console.log('鼠标移出时触发');
}
oDiv.onmousemove = function(){
console.log('鼠标移动时触发');
}
oDiv.onmouseenter = function(){
console.log('鼠标移入事件2');
}
oDiv.onmouseleave= function(){
console.log('鼠标移出事件2');
}
键盘事件
键盘事件:
document 或者 input 才会有键盘事件
document.on键盘事件的事件类型 = function(){}
document.onkeyup = function(){
console.log('键盘抬起时触发');
}
document.onkeydown = function(){
console.log('键盘按下时触发');
}
document.onkeypress = function(){
console.log('键盘按下抬起时触发');
}
var Ipt = document.querySelector('input');
Ipt.onkeydown = function(){
console.log('键盘按下时触发');
}
滚动事件
window.onload = function(){
var oDiv = document.querySelector('div');
console.log(oDiv);
}
获取键盘事件
var inp = document.querySelector('#inp');
inp.onkeyup = function(e){
if(e.ctrlKey && e.key == 'a'){
console.log('此时按下了ctrl+a');
}else if(e.ctrlKey && e.key == 'c'){
console.log('此时按下了ctrl+c');
}else if(e.ctrlKey && e.key == 'v'){
console.log('此时按下了ctrl+v');
}
}
表单事件
var inp = document.querySelector('#inp');
inp.onfocus = function(){
console.log('当前文本框获得焦点');
}
inp.onblur = function(){
console.log('当前文本框失去焦点');
}
inp.onchange = function(){
console.log('当前文本框内容被更改');
}
inp.oninput = function(){
console.log('当前文本框正在输入内容');
}
克隆
复制克隆一个li
被克隆元素.cloneNode(参数)
参数为false 不克隆
参数为true时克隆 => 默认为true
获取鼠标位置
var oDiv = document.querySelector('div');
oDiv.onclick = function(e){
console.log('相对于事件的X轴:', e.offsetX);
console.log('相对于事件的Y轴:', e.offsetY);
console.log('<<<<<<<<<<<<<<>>>>>>>>>>>>>>');
console.log('相对于页面的X轴:', e.pageX);
console.log('相对于页面的Y轴:', e.pageY);
console.log('<<<<<<<<<<<<<<>>>>>>>>>>>>>>');
console.log('相对于浏览器窗口的X轴:', e.clientX);
console.log('相对于浏览器窗口的Y轴:', e.clientY);
}
获取元素尺寸和浏览器窗口尺寸
var oDiv = document.querySelector('div');
console.log(oDiv.offsetWidth);
console.log(oDiv.offsetHeight);
console.log(oDiv.clientWidth);
console.log(oDiv.clientHeight);
console.log(window.innerHeight);
console.log(window.innerWidth);
document.documentElement.clientHeight
document.documentElement.clientWidth