【问题标题】:Program for responding second click within 2 seconds of first在第一次点击后 2 秒内响应第二次点击的程序
【发布时间】:2023-03-14 23:20:01
【问题描述】:

我正在尝试制作一个程序来查看是否在前一次点击后 2 秒内进行了点击。 我的代码是:

document.addEventListener("click",do,false);
var lastBack=0;
function do(e){
   if((new Date().getTime()-lastBack)<2000)
         { alert("you clicked within 2 seconds this time");}
   else         
         { document.write("Quickly click again");
          lastBack=new Date().getTime(); }
}

我只是无法弄清楚它有什么问题,但是当我单击时,它只显示“再次快速单击”,没有其他任何反应。即使在长时间等待后单击时它也不会重复同一行。

【问题讨论】:

  • 加载后从不 document.write。页面将被擦除
  • @mplungjan:这只是为了提问,而不是为了真正的代码
  • “do”是保留字,不能调用函数“do”

标签: javascript html


【解决方案1】:
  1. 加载后切勿 document.write。页面将被擦除
    Why is document.write considered a "bad practice"?
    What damage is done by document.write()?

  2. do 是保留字。重命名函数或使其匿名

var lastBack = 0;

function doIt(e) {
  if ((new Date().getTime() - lastBack) < 2000) {
    alert("you clicked within 2 seconds this time");
  } else {
    document.getElementById("message").innerHTML = "Quickly click again";
    lastBack = new Date().getTime();
  }
}


window.addEventListener("load", function() { // when page has loaded
  document.addEventListener("click", doIt, false); // assign click handler
},false)  
&lt;span id="message"&gt;&lt;/span&gt;

【讨论】:

  • 先生,非常感谢您的工作示例,但是当我保存它并在 chrome 版本 67.0.3396.99(官方构建)(64 位)中运行时,您的代码不起作用,但它确实适用于 stackoverflow 代码sn-p
  • 你必须做一个页面加载事件
  • 我不明白先生。经验丰富,请您帮助我
  • 请参阅更新 - 在 Chrome 68.0.3440.75 之外的 SO 中测试
  • 成功了!但我不明白使用 document.write() 代替你的方法是如何造成 JS 解释问题的
猜你喜欢
  • 2017-07-03
  • 2011-11-17
  • 2013-04-20
  • 2017-12-13
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多