javascript - JQuery - Onclick - 提醒已过去的时间量

标签 javascript jquery timer global-variables

当用户按下退出键时,我想显示一条警报消息,声明自他们开始输入以来已经过去的时间。

$(document).ready(function() {
  $(document).keyup(function(e) {
    if (e.keyCode == 27) {
      var current_date = new Date();
      var time_end = current_date.getTime();
      alert(time_end - time_start);
    }});
  $(":input").click(function() {
     var date = new Date();
     var time_start = date.getTime();
  });

问题是,因为 time_start 是一个局部变量,在 $(":input").click 函数中定义,所以我无法在$(document).keyup 方法。

不幸的是,我也无法通过在函数外部声明它来使其成为全局变量,因为当用户在输入框内单击时必须启动计时器。

根据 W3Schools 的说法,time_start 应该是一个全局变量,因为我为其分配了值 date.getTime()

非常感谢任何反馈。提前致谢。

最佳答案

您可以保存他们开始在输入的父节点上键入内容的时间点。
例如<body />元素(可能有更好的地方)

$(function() {
  $(document).on("keyup", function(ev) {
    if (ev.which != 27) {
      return;
    }

    var startTime = $("body").data("startTime");
    if (typeof startTime != "object") {
      return;
    }

    alert(new Date().getTime() - startTime.getTime());
  });

  $(":input").on("click", function() {
    $("body").data("startTime", new Date());
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />

关于javascript - JQuery - Onclick - 提醒已过去的时间量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28097204/

相关文章:

javascript - 尝试使用 LiveScript 理解 Maybe Monad

javascript - 使用javascript单击将行和列添加到表中

javascript - 如何在网页上全屏显示幻灯片?

javascript - 在 Qualtrics 中实现多页计时器

javascript - 需要简单解释一下javascript执行上下文

javascript - 单击更改 Bootstrap radio

javascript - 将 "this"传递给 .on 函数似乎不起作用

javascript - jquery遍历行获取span类和标题

c++ - linux C++定时器周期回调

c++ - boost 截止时间计时器的替代方案