javascript实现单击和双击并存的方法


Posted in Javascript onDecember 13, 2014

本文实例讲述了javascript实现单击和双击并存的方法。分享给大家供大家参考。具体分析如下:

在我们进行网页开发的过程中经常会遇到这么一个问题,为一个链接注册双击事件,或者让一个按钮或者其他元素上面同时注册单击或者双击事件,这时候我们发现网页中的双击事件似乎永远都不会起作用,原因是当我们点击一次的时候,就被超链接或者单击事件截获了,本文描述了一个如何解决这个技术问题的具体方法。本解决方案的实现原理是,单击事件和双击事件都调用同一个方法,我们根据两次鼠标点击的间隔时间来判断到底是单击还是双击事件。单击事件来临的时候先不调用,等一小段时间,过了这段时间,如果没有下一次单击来临就开始调用单击对应的操作,如果有下一次点击就调用双击。
详细描述请参加下面代码清单:

<HTML> 

  <HEAD> 

  <TITLE> javascript 实现单击和双击并存 </TITLE> 

  <META NAME=" Generator" CONTENT=" EditPlus" > 

  <META NAME=" Author" CONTENT=" https://3water.com/" > 

  <META NAME=" Keywords" CONTENT=" " > 

  <META NAME=" Description" CONTENT=" " > 

  </HEAD>
  <BODY> 

  <SCRIPT LANGUAGE=" JavaScript" > 

  <!--

  var dcTime=250;       // doubleclick time

  var dcDelay=100;     // no clicks after doubleclick

  var dcAt=0;               // time of doubleclick

  var savEvent=null; // save Event for handling doClick().

  var savEvtTime=0;   // save time of click event.

  var savTO=null;       // handle of click setTimeOut

  

  function showMe(txt) { 

    document.forms[0].elements[0].value += txt; 

  } 

  

  function handleWisely(which) { 

    switch (which) { 

        case " click" :            

            savEvent = which; 

            d = new Date(); 

            savEvtTime = d.getTime(); 

            savTO = setTimeout(" doClick(savEvent)" , dcTime); 

            break; 

        case " dblclick" :

            doDoubleClick(which); 

            break; 

        default:

    } 

  } 

  

  function doClick(which) { 

    if (savEvtTime - dcAt <= 0) { 

        return false; 

    } 

    showMe(" 单击" ); 

  } 

  

  function doDoubleClick(which) { 

    var d = new Date(); 

    dcAt = d.getTime(); 

    if (savTO != null) { 

        savTO = null; 

    } 

    showMe(" 双击" ); 

  }
  //--> 

  </SCRIPT>
<p> 

            <a href=" javascript:void(0)" 

                onclick=" handleWisely(event.type)" 

                ondblclick=" handleWisely(event.type)" 

                style=" color: blue; font-family: arial; cursor: hand" > 

          点击一下看看结果:

      </a> 

      </p> 

        

      <form> 

          <table> 

              <tr> 

                  <td valign=" top" > 

                    事件模式: <textarea rows=" 4" cols=" 60" wrap=" soft" > </textarea> 

                  </td> 

              </tr> 

              <tr>

                  <td valign=" top" > 

                      <input type=" Reset" > 

                  </td> 

              </tr> 

          </table> 

      </form> 

  </BODY> 

</HTML>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
判断脚本加载是否完成的方法
May 26 Javascript
JavaScript 异步方法队列链实现代码分析
Jun 05 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
May 10 Javascript
javascript学习笔记(四)function函数部分
Sep 30 Javascript
JavaScript观察者模式(经典)
Dec 09 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
Dec 27 Javascript
node.js-v6新版安装具体步骤(分享)
Sep 06 Javascript
vue移动端UI框架实现QQ侧边菜单组件
Mar 09 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
Sep 14 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
Oct 23 Javascript
vue-cli3搭建项目的详细步骤
Dec 05 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
Sep 01 Javascript
Javascript数组与字典用法分析
Dec 13 #Javascript
jQuery实现表单提交时判断的方法
Dec 13 #Javascript
js实现iframe跨页面调用函数的方法
Dec 13 #Javascript
javascript里使用php代码实例
Dec 13 #Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 #Javascript
js与css实现弹出层覆盖整个页面的方法
Dec 13 #Javascript
jQuery对于显示和隐藏等常用状态的判断方法
Dec 13 #Javascript
You might like
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
第九节 绑定 [9]
2006/10/09 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
浅谈js中的this问题
2017/08/31 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
python切换hosts文件代码示例
2013/12/31 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
飞利浦法国官网:Philips法国
2019/07/10 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
爱国主义教育活动总结
2014/05/07 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android