一、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基础之事件的更多相关文章

  1. JS基础(二)事件监听练习之table鼠标悬停行变色

    JS监听事件简单学习: [object].addEvent("事件类型","处理函数","冒泡事件或捕获事件");   [object].r ...

  2. js基础 -----鼠标事件(按下 拖拽)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. js 基础篇(点击事件轮播图的实现)

    轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首 ...

  4. JS基础——事件绑定

    上一篇博客JS事件对象中,老师问JS事件处理和VB中的事件处理有什么联系?先来解决一下这个问题.举个VB.net中事件处理的样例(JS敲久了,VB习惯的都不熟悉了,看来得常常回想了): 1.事件处理V ...

  5. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

       前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...

  6. GSAP JS基础教程--动画的控制及事件

    好多天没有写无博文啦,今天无聊就再写一下! 今天要讲的是TweenLite的一些事件以及,TweenLite动画的控制,TweenMax类似,请自行参考官方文档:http://api.greensoc ...

  7. 【JS】395-重温基础:事件

    本文是 重温基础 系列文章的第二十篇. 这是第三个基础系列的第一篇,欢迎持续关注呀!重温基础 系列的[初级]和[中级]的文章,已经统一整理到我的[Cute-JavaScript](http://js. ...

  8. JS 的事件基础、事件侦听与抛发、

    前言 JavaScript是一种事件驱动型语言.事件驱动是指JavaScript引擎并不是在看到代码之后就会立即执行,而是会在合适的时间才去执行.这个合适的时间是指当某个事件发生之后(例如一个输入框的 ...

  9. 怎么理解js中的事件委托

    怎么理解js中的事件委托 时间 2015-01-15 00:59:59  SegmentFault 原文  http://segmentfault.com/blog/sunchengli/119000 ...

随机推荐

  1. 手动配置WCF宿主的.config文件遇到的几种错误

    今天尝试用控制台应用程序作为WCF宿主,遇到几个问题,这几个问题虽然都不难,但寻找解决方案相当费时费力,做记录. WCF标准的配置文件为: <system.serviceModel>    ...

  2. 报错Database returned an invalid value in QuerySet.datetimes(). Are time zone definitions for your database and pytz installed?解决

    在django中的setting.py中: LANGUAGE_CODE = 'en-us' TIME_ZONE = 'Asia/Shanghai' #'UTC' USE_I18N = True USE ...

  3. Google MapReduce/GFS/BigTable三大技术的论文中译版

    今天查找分布式计算的有关资料,发现Google的三大核心技术MapReduce.GFS和BigTable的论文都已经被翻译成高质量的中文,更巧的是,这三篇中译版的原发地都是CSDN的Blog.其中最新 ...

  4. 使用Nexus搭建Maven私服

    1.    环境搭建 1.1  下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件--免费] NE ...

  5. 新建我的 第一个maven项目

    maven是管理项目的,myeclipse是编写代码的.第一次写项目都要配置好多东西,很麻烦,now 来看看怎样新建一个maven项目. 百度经验:jingyan.baidu.com 工具/原料   ...

  6. (五)c语言条件编译#ifdef与#if defined

    c语言条件编译#ifdef与#if defined defined NAME是用来判断NAME是否被定义了(被用define定义了). #ifdef NAME == #if defined(NAME) ...

  7. JAVA 判断一个字符串是不是一个合法的日期格式

    原文:http://www.cnblogs.com/xdp-gacl/p/3548307.html 最近开发公司的项目,一直找不到合适的正则表达式可以判断一个字符串是否可以转成日期,今天发现可以采用S ...

  8. Android布局_网格布局GirdLayout

    自Android4.0版本后新增的GirdLayout网格布局(API 14) <?xml version="1.0" encoding="utf-8"? ...

  9. Asp.NET设置Session过期时间的四种方式

    在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...

  10. Machine Learning - 第6周(Advice for Applying Machine Learning、Machine Learning System Design)

    In Week 6, you will be learning about systematically improving your learning algorithm. The videos f ...