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元素绑定的事件以及绑定代码所在位置 日常的网页开发调试工作中,经常需要知道指定的某个网页元素绑定了哪些事件以及绑定代码的位置,下面介绍三种用来跟踪页面中的事件的方法. ...
随机推荐
- Blind Estimation and Detection of Space-Time Trellis Coded Transmissions over the Rayleigh Fading MIMO Channel
目录 文章来源 摘要 基本概念 粒子滤波 时间序列模型 系统模型 通信系统 经典状态空间表示 论文所提出的状态空间表示 借鉴之处 文章来源 IEEE TRANSACTIONS ON COMMUNICA ...
- 关于css 的垂直居中
对于元素的水平居中,我根据我自己之前的一些学习来进行一些总结,如果有不对的地方,欢迎指正~ 一.让大小不固定的元素垂直居中 因为:表格的单元格的特别属性:垂直居中等: `div.parent { di ...
- (27)ASP.NET Core .NET标准REST库Refit
1.简介 Refit是一个受到Square的Retrofit库(Java)启发的自动类型安全REST库.通过HttpClient网络请求(POST,GET,PUT,DELETE等封装)把REST AP ...
- SpringBoot入门系列(五)Thymeleaf的常用标签和用法
前面介绍了Spring Boot 中的整合Thymeleaf .不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/16577 ...
- MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
hello,小伙伴们,好久不见,MySQL系列停更了差不多两个月了,也有小伙伴问我为啥不更了呢?其实我去看了MySQL的全集,准备憋个大招,更新篇长文(我不会告诉你是因为我懒的). 好了,话不多说,直 ...
- nsq 初学使用日记
win下更加直观一些,所以不使用liunx 第一步下载 nsq 下载地址 https://github.com/nsqio/nsq.git 使用git clone或者go get 下载下来 第二部 编 ...
- CouchDB的简单使用
一.安装CouchDB 到官网下载CouchDB,在windows下安装CouchDB较为简单,略过. 安装完后,确认CouchDB在运行,然后在浏览器访问http://127.0.0.1:5984/ ...
- PageRank 算法初步了解
前言 因为想做一下文本自动摘要,文本自动摘要是NLP的重要应用,搜了一下,有一种TextRank的算法,可以做文本自动摘要.其算法思想来源于Google的PageRank,所以先把PageRank给了 ...
- Django中ORM中的get与filter区别
本文出自 “orangleliu笔记本” 博客,出处http://blog.csdn.net/orangleliu/article/details/38597593 Django的orm中get和fi ...
- The Game Of Life – 数据结构与算法的敲门砖
The Game Of Life(生命游戏,又称为细胞自动机)几乎是所有数据结构与算法导论教程前言的一个很经典的程序了.这是一个零玩家游戏,发生在一个平面网格里.每个格子的细胞都有死亡和存活两种状态, ...