js事件的获取
获取元素样式属性
| Method | DES |
|---|---|
| clientWidth | 获取元素宽度 |
| clientHeight | 获取元素高度(内容+内边距) |
| document.body.clientWidth | 获取body宽度 |
| document.body.clientHeight | 获取body高度 |
| offsetWidth | 包括边框宽度 |
| offsetHeight | 包括边框高度(内容+内边距+边框) |
| offsetLeft | 距离左边距离 |
| offsetTop | 距离右边距离,当前元素距离定位父级的 |
事件对象
作用:捕获用户的操作行为
事件对象的获取:
1、全局event对象--IE9+,chrome
2、形参接收方式--
document.onclick = function(m){
m = m || event;//兼容ie,chrome及IE8-
alert(m);
}
//拖拽
var box = document.getElementById("box");//获取box元素ID
box.onmousedown = function(m){
m = m || event;//兼容浏览器
var initX = m.clientX,//定义鼠标初始位置
initY = m.clientY,
initLeft = box.offsetLeft,//box初始位置
initTop = box.offsetTop;
document.onmousemove = function(m){
m = m || event;
var moveX = m.clientX,//鼠标拖拽位置
moveY = m.clientY,
changeX = moveX - initX,//拖拽改变距离
changeY = moveY - initY;
console.log(changeX,changeY);//打印出改变距离
box.style.left = initLeft + changeX + "px";//box最终显示位置
box.style.top = initTop + changeY +"px";
}
}
document.onmouseup = function(){//当鼠标释放时,跳出移动操作
document.onmousemove = null;
}
//注意:box.onmousemove和document.onmousemove的差别,前者不需要长按住鼠标,而后者需要
冒泡事件
当父元素和子元素都绑定了“相同事件”,
子元素触发事件的时候会传递给父元素,相当于父元素也触发了事件 ——— 事件传播,冒泡事件
var parent = document.getElementById("parent");
var box = document.getElementById("box");
box.onmouseover = function(m){
m = m || event;//兼容模式
m.cancelBubble = true;//阻止冒泡
console.log("子节点");
}
parent.onmouseover = function(){
console.log("父节点=======");
}
监听事件
addEventListener('click', fn2, false) //chrome、IE9+
removeEventListener('click', fn2, false)
参一:注册的事件的事件名字
参二:注册事件的函数
参三:true捕获事件,false冒泡事件(默认值)。
attachEvent('onclick', fn1) //IE8-执行顺序相反
detachEvent('onclick', fn1);
参一:事件名字
参二:注册事件的函数
//兼容模式
function addEvent(dom,eventName,fun){//定义函数
if(dom.addEventListener){//判断事件兼容的浏览器是否为chrome、IE9+
dom.addEventListener(eventName,fun);
}else{//否者执行IE浏览器模式下事件
dom.attachEvent('on'+eventName,fun);
}
}
addEvent(document,'click',fn1);//调用函数
addEvent(document,'click',fn2);
键盘事件
根据输入键盘值(keycode)响应事件;
//例:输入上下左右调整模块
var box = document.getElementById("box");
document.onkeydown = function(m){//传入参数
m = m || event;//兼容模式
var boxLeft = box.offsetLeft,//定义初始距离
boxTop = box.offsetTop;
switch(m.keyCode) {//传递键盘值参数进行循环
case 37://左键keycode=37
boxLeft -= 5;//移动距离
break;
case 38://上键keycode=38
boxTop -= 5;
break;
case 39://右键keycode=39
boxLeft += 5;
break;
case 40://下键keycode=40
boxTop += 5;
break;
default://其他情况
console.log("请输入上下左右按键");
}
box.style.left = boxLeft + "px";//赋值变换后的距离
box.style.top = boxTop + "px";
}
js事件的获取的更多相关文章
- js 事件委托获取子元素下标
html:部分 <ul> <li>第一个</li> <li>第二个</li> <li>第三个</li> <li ...
- js事件技巧方法整合
window.resizeTo(800,600); //js设置浏览器窗口尺寸 window.open (function(){ resizeTo(640,480);//设置浏览器窗口尺寸 moveT ...
- 移动端报表JS开发示例--获取定位
上次分享了移动端报表JS开发的系统概念,后来我又回去摸索了一些案例.之前接触到的FineReport的APP客户端可以用来打卡签到,就好奇研究了以下,这次就来聊一聊报表移动端开发如何实现定位功能. 1 ...
- JS事件
JS事件: 声明:为了事件对象event跨浏览器兼容: var oEvent==ev||event; 所以在下面用到 event 的地方都用 oEvent 代替 1)doucument的 ...
- js事件委托的方式绑定详解
js事件绑定 事件绑定,这里使用了冒泡的原理,从点击的元素开始,递归方式的向父元素传播事件,这样做的好处是对于大量要处理的元素,不必为每个元素都绑定事件,只需要在他们的父元素上绑定一次即可,提高性能. ...
- js事件绑定细节说明
javascript绑定事件: 经常用jQuery去写,时间长了对原生态的js事件绑定的知识会慢慢淡化或者遗忘了,必须翻出来再次总结,今天再次把js原生态事件的处理做个总结. 从最初开始,谁刚接触ja ...
- JS事件委托的原理和应用
js事件委托也叫事件代理,实际上事件委托就是通过事件冒泡实现的,所谓的事件就是onclick,onmouseover,ondown等等,那么委托呢?委托就是指本来这个事是要你自己做的,但是你却让别人帮 ...
- JS事件(事件冒泡和事件捕获)
事件流:描述的是在页面中接收事件的顺序 事件冒泡:由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档) 事件捕获:最不具体的节点先接收事件,而最具体的节点应该是最后接收事件 DOM中:用 ...
- JS事件调试
JS事件调试 - 查找HTML元素绑定的事件以及绑定代码所在位置 日常的网页开发调试工作中,经常需要知道指定的某个网页元素绑定了哪些事件以及绑定代码的位置,下面介绍三种用来跟踪页面中的事件的方法. ...
随机推荐
- iOS开发线程同步技术-锁
概览 1,什么是锁(临界区)? 2,常用的锁有哪些? 3,相关链接 什么是锁(临界区) 临界区:指的是一块对公共资源进行访问的代码,并非一种机制或是算法. 常用的锁有哪些? 互斥锁:是一种用于多线程编 ...
- Linq的整型或实体类null引发的报错问题
经常在程序中遇到两个空值报错问题: 问题1:int类型如果为不可空,假如传进去null,会报错 问题2:EF的获得单个实体的Model如果为空,那么后面如果跟上属性会报错 解决问题1: 一般属性都设为 ...
- DvaJS入门课
不管是Vue还是React,他们都没解决组件间的通信和数据流问题.当然,这个说法不是很准确,准确的说法是他们都没很好的处理这些问题.我们是可以用一些烂手段去解决这个问题,但是当应用比较大.数据多的时候 ...
- 峰哥说技术:03-Spring Boot常用注解解读
Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 03 Spring Boot常用注解解读 在Spring Boot中使用了大量的注解,我们下面对一些常用的 ...
- 【Java必修课】判断String是否包含子串的四种方法及性能对比
1 简介 判断一个字符串是否包含某个特定子串是常见的场景,比如判断一篇文章是否包含敏感词汇.判断日志是否有ERROR信息等.本文将介绍四种方法并进行性能测试. 2 四种方法 2.1 JDK原生方法St ...
- python社区要放弃了pip?版本信息里带警告很不寻常哦
pip是python的一个包管理器. 今天再查询Pip3 -V 时,除了正常的版本信息外,多了几行信息 WARNING: pip is being invoked by an old script w ...
- 使用jquery实现动态时钟
先导入jquery-1.7.2.min.js或其他版本文件 js部分 <script> $(function () { showTime(); //文档加载后.就开始显示时间 var se ...
- c++作业22题
一.单选题(共22题,100.0分) 1 已知int i=5,下列do-while循环语句的循环次数是 do{ cout<<i - -<<endl; i - -; }while ...
- 问不倒的HTTP协议
一.HTTP简介 1.HTTP HTTP:超文本传输协议,是一种通信协议:允许超文本标记文档从Web服务器传送到客户端的浏览器中. 简单:传输html文件的协议. Web:是一种基于超文本和HTML的 ...
- Java 14 开箱,它真香香香香
Java 14 已经发布有一周时间了,我准备来开个箱,和小伙伴们一起来看看新特性里面都有哪些好玩的.我们程序员应该抱着尝鲜.猎奇的心态,否则就容易固步自封,技术停滞不前.先来看看 Java 14 都有 ...