js基础之事件
一、event对象
document.onclick=function(ev){
oEvent=event?event:ev;//兼容性写法
alert(oEvent.clientX);
alert(oEvent);//IE为object、chrome为object MouseEvent
/*if(ev){
alert(event.clientX);//IE
}else{
//alert(ev.clientX);//ff
alert(ev);
}*/
}
二、事件冒泡
var oBtn = document.getElementById('btn1');
var oDiv = document.getElementById('div1');
oBtn.onclick=function(ev){
var oEvent = ev||event;
oDiv.style.display='block';alert('block');
oEvent.cancelBubble=true;//阻止事件冒泡
}
document.onclick=function(){
oDiv.style.display='none';alert('none');
}
三、鼠标位置
栗子一:跟随鼠标的提示框
document.onmousemove=function(ev){
var oEvent=event||ev;//兼容性写法
var oDiv = document.getElementById('div1');
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft||document.body.scrollLeft;
oDiv.style.left=oEvent.clientX+scrollLeft+'px';//只要用到clientX必须加上scrollLeft
oDiv.style.top=oEvent.clientY+scrollTop+'px';//只要用到clientY必须加上scrollTop
}

栗子二、跟随鼠标的一串div
var lDiv = document.getElementsByTagName('div');
var i=0;
document.onmousemove=function(ev){
var oEvent=event||ev;//兼容性写法
for(i=lDiv.length-1;i>0;i--){
lDiv[i].style.left=lDiv[i-1].style.left;
lDiv[i].style.top=lDiv[i-1].style.top;
}
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft||document.body.scrollLeft;
lDiv[0].style.left=oEvent.clientX+scrollLeft+'px';
lDiv[0].style.top=oEvent.clientY+scrollTop+'px';
}
四、keyCode
键盘控制移动div
document.onkeydown=function(ev){
var oEvent = event||ev;
var oDiv = document.getElementById('div1');//alert(oEvent.keyCode);
if(oEvent.keyCode==37||oEvent.keyCode==65){
oDiv.style.left=oDiv.offsetLeft-10+'px';
}else if(oEvent.keyCode==39||oEvent.keyCode==68){
oDiv.style.left=oDiv.offsetLeft+10+'px';
}else if(oEvent.keyCode==87){
oDiv.style.top=oDiv.offsetTop-10+'px';
}else if(oEvent.keyCode==83){
oDiv.style.top=oDiv.offsetTop+10+'px';
}
}
五、ctrl+回车提交
var oBtn = document.getElementById('btn1');
var oTxt1 = document.getElementById('txt1');
var oTxt2 = document.getElementById('txt2');
oBtn.onclick=function(ev){
oTxt1.value+=oTxt2.value+'\r\n';
oTxt2.value='';
}
oTxt2.onkeydown=function(ev){
var oEvent = ev||event;
if(oEvent.ctrlKey&&oEvent.keyCode==13){
oTxt1.value+=oTxt2.value+'\r\n';
oTxt2.value='';
}
六、阻止默认事件
栗子一:屏蔽右键菜单
document.oncontextmenu=function(ev){
return false;
}
栗子二:阻止表单提交
var oForm=document.getElementById('form1');
oForm.onsubmit = function(){
return false;
}
栗子三:阻止输入文本
var oTxt = document.getElementById('txt1');
oTxt.onkeydown=function(){
return false;
}
栗子四:自定义右键菜单
document.oncontextmenu=function(ev){
var oUl = document.getElementById('ul1');
var oEvent = ev||event;
oUl.style.display = 'block';
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft||document.body.scrollLeft;
oUl.style.left = oEvent.clientX+scrollTop+'px';
oUl.style.top = oEvent.clientY+scrollLeft+'px';
return false;
}
document.onclick=function(){
var oUl = document.getElementById('ul1');
oUl.style.display = 'none';
}
七、拖拽
var oDiv = document.getElementById('div1');
var disX=0;
var disY=0;
document.onmousedown=function(ev){
var oEvent=ev||event;
disX = oEvent.clientX-oDiv.offsetLeft;
disY = oEvent.clientY-oDiv.offsetTop;
document.onmousemove=function(ev){
var oEvent=ev||event;
var l = oEvent.clientX-disX;
var t = oEvent.clientY-disY;
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft||document.body.scrollLeft;
if(l>0&&l<document.documentElement.clientWidth-oDiv.offsetWidth&&t>0&&t<document.documentElement.clientHeight-oDiv.offsetHeight){
oDiv.style.left = l+'px';
oDiv.style.top = t+scrollTop+'px';
}
}
document.onmouseup=function(){
document.onmousemove=null;
document.onmouseup=null;
}
}
js基础之事件的更多相关文章
- JS基础(二)事件监听练习之table鼠标悬停行变色
JS监听事件简单学习: [object].addEvent("事件类型","处理函数","冒泡事件或捕获事件"); [object].r ...
- js基础 -----鼠标事件(按下 拖拽)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js 基础篇(点击事件轮播图的实现)
轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首 ...
- JS基础——事件绑定
上一篇博客JS事件对象中,老师问JS事件处理和VB中的事件处理有什么联系?先来解决一下这个问题.举个VB.net中事件处理的样例(JS敲久了,VB习惯的都不熟悉了,看来得常常回想了): 1.事件处理V ...
- JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
前 言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...
- GSAP JS基础教程--动画的控制及事件
好多天没有写无博文啦,今天无聊就再写一下! 今天要讲的是TweenLite的一些事件以及,TweenLite动画的控制,TweenMax类似,请自行参考官方文档:http://api.greensoc ...
- 【JS】395-重温基础:事件
本文是 重温基础 系列文章的第二十篇. 这是第三个基础系列的第一篇,欢迎持续关注呀!重温基础 系列的[初级]和[中级]的文章,已经统一整理到我的[Cute-JavaScript](http://js. ...
- JS 的事件基础、事件侦听与抛发、
前言 JavaScript是一种事件驱动型语言.事件驱动是指JavaScript引擎并不是在看到代码之后就会立即执行,而是会在合适的时间才去执行.这个合适的时间是指当某个事件发生之后(例如一个输入框的 ...
- 怎么理解js中的事件委托
怎么理解js中的事件委托 时间 2015-01-15 00:59:59 SegmentFault 原文 http://segmentfault.com/blog/sunchengli/119000 ...
随机推荐
- [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等
原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...
- HBase之表空间
1.介绍 在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分.Apache HBase从0.98.0, 0.95.2两个版本开始支 ...
- mongodb数据库js查询
#健康风险-disease db.disease.find({versions:'2'}).forEach(function(item){ item.diseaseDetail && ...
- java 集合2(迭代器)
迭代器方法:(把迭代器想象成抓娃娃机的爪子) hasNext() 问是否有元素可遍历,如果有元素可以遍历,返回true,否则返回false 工作原理:这一个迭代的过程是这样的,获取到迭代器时候 ...
- dedecms 模板文件不存在,无法解析文档"的终极各种解决办法
方法一:[此对应喜欢把模板文件使用".html"的格式,] /include/arc.archives.class.php 556行 if (!preg_match(&qu ...
- js对字符串函数之charAt()
var str="012345"; 字符串下标的index从0开始: charAt(index)返回指定位置的字符如果index不在0-str.length之间,返回一个空字符串: ...
- C++一个简单的类
从基本数据类型说起: 一般情况下,c++中的基本数据类型有int ,char,,,, 但是这些数据类型是有限的,而且还是C++中自带的,缺乏灵活性 于是C++提供了一种定义自定义类型的方式----使用 ...
- Java学习之约瑟夫环的两中处理方法
package day_2; import java.util.Scanner; /** * @author Administrator * 约瑟夫环问题: 设编号为 1,2,3,....n的N个人围 ...
- hdu-----(4514)湫湫系列故事——设计风景线(树形DP+并查集)
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- java学习之协调同步的线程
当一个线程使用的同步方法中用到某个变量,而此变量有需要其他线程修改后才能符合本线程的需要, 那么可以在同步方法中使用wait(),wait方法可以中断线程的执行,使本线程等待,暂时让出CPU的使用权, ...