【问题标题】:Check if time since last click is greater than 2 seconds检查自上次点击后的时间是否大于 2 秒
【发布时间】:2019-03-24 07:33:48
【问题描述】:

感谢this post,如果找到了如何执行此操作,但正如您在下面的代码中看到的那样,当自上次点击后的时间大于 2 秒时,我正在尝试console.log('Done');。但是这不起作用。

var lastClick =  0;
var button_pressed = false;

let button1 = document.getElementById('button1');
let button2 = document.getElementById('button2');

button1.onclick = function() {
  button_pressed = true;
  CheckAnswer();
}

button2.onclick = function() {
  button_pressed = true;
  CheckAnswer();
}

function CheckAnswer() {
  if(button_pressed === true) {
    var d = new Date();
    var t = d.getTime();
    if(t - lastClick < 2000) {
      console.log('Continue');
    }
  } else if (t - lastClick > 2000) {
    console.log('Done');
  }
  lastClick = t;
}
<button id="button1">Button1</button>
<button id="button2">Button2</button>

感谢您的帮助。

【问题讨论】:

  • 问题是,一旦按下按钮,button_pressed 总是为真......所以else if (t - lastClick &gt; 2000) 永远被检查
  • 是的,就像 pim 的回答指出的那样,我的 if 语句放错了地方。

标签: javascript function date time


【解决方案1】:

代码永远不会到达 else if,因为它要求 button_pressedfalse 我修复了您的代码,请参见下文。 else if 现在在 button_pressed === true 语句中声明。

function CheckAnswer() {
  if(button_pressed === true) {
    var d = new Date();
    var t = d.getTime();
    if(t - lastClick < 2000) {
      console.log('Continue');
    } else {
       console.log('Done');
    }
  }
  lastClick = t;
}

【讨论】:

  • if (t - lastClick &gt; 2000) 几乎是多余的...... - 唯一会达到的时间,并且是错误的,是如果在上次按下按钮后恰好按下按钮 2000 毫秒:p (但代码作为描述想要 - 所以我没有投反对票)
  • 同意,我快速浏览了那部分。在回复中修复它...谢谢!
  • 如何在无需再次单击按钮的情况下进行检查?
  • @Windclay 你是什么意思? (您想在不再次单击按钮的情况下检查什么?)
  • 在我的代码中,我在按下按钮时调用了该函数,但是我将如何检查自上次单击以来的时间是否大于函数外的 2,以便它自动执行并且我不'不必再次调用 CheckAnswer 函数。
【解决方案2】:

var lastClick = Date.now();
var button_pressed = false;

let button1 = document.getElementById('button1');
let button2 = document.getElementById('button2');

button1.onclick = function() {
  button_pressed = true;
  CheckAnswer();
}

button2.onclick = function() {
  button_pressed = true;
  CheckAnswer();
}

function CheckAnswer() {
  var t = Date.now();
  var diff = t - lastClick;
  if(diff < 2000) {
      console.log('Continue');
  } else {
      console.log('Done');
  }
  lastClick = t;
}
<button id="button1">Button1</button>
<button id="button2">Button2</button>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多