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元素绑定的事件以及绑定代码所在位置 日常的网页开发调试工作中,经常需要知道指定的某个网页元素绑定了哪些事件以及绑定代码的位置,下面介绍三种用来跟踪页面中的事件的方法. ...
随机推荐
- datatable某列不排序、和自定义搜索、给数据里面加属性
datatable中如果不想对前几列进行排序,使用以下代码: $('#informationList').DataTable({ //对0,1,2列不排序 "columnDefs" ...
- property 属性
#propery 属性"""内置装饰器函数,只在面向对象中使用."""#计算圆的面积,圆的周长 from math import pi cl ...
- 随手撸一个简单的带检查的printf
#include <stdio.h> #include <iostream> #include <vector> #include <string> # ...
- .NET Core 基于Websocket的在线聊天室
什么是Websocket 我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯,但是在web体系是用不了socket通讯技术的,因为http被设计成无状态,每次跟服务器通讯完成后 ...
- 从头认识js-js中的对象
什么是对象? ECMA-262中把对象定义为:“无序属性的集合,其属性可以包含基本值,对象或者函数”.严格来讲,对象是一组没有特定顺序的值.对象的每个属性或方法·都有一个名字,而每个名字都映射到一个值 ...
- k3s原理分析丨如何搞定k3s node注册失败问题
前 言 面向边缘的轻量级K8S发行版k3s于去年2月底发布后,备受关注,在发布后的10个月时间里,Github Star达11,000颗.于去年11月中旬已经GA.但正如你所知,没有一个产品是十全十美 ...
- SpringBoot开始多线程
增加配置类 package com.springbootdemo.demo.config; import org.springframework.context.annotation.Bean; im ...
- python 软件目录规范
软件目录结构规范 软件开发规范 一.为什么要设计好目录结构? 1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快 ...
- 负载均衡框架 ribbon 二
Ribbon 负载均衡机制 官方文档地址:https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers 1. Ribbon 内置 ...
- socket TCP 从0实现音频传输 ALSA 播放
RTP标准是采用 UDP 发送,有不少现成的开源库,但不在本文讨论的范围内.UDP 用户数据报,不提供流程,安全传输的功能,但速度快,能提供多播,广播,没有序列号 SEQ ,有 MTU 限制,1500 ...