Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/JQuery时间计数器_Javascript_Jquery_Jquery Mobile - Fatal编程技术网

Javascript/JQuery时间计数器

Javascript/JQuery时间计数器,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我正在寻找: 计数时间-以秒和分钟为单位。 我的计数我想它开始时,一个按钮被点击,并停止,如果再次点击。 我点击时从零开始计算每个按钮 这是我试过的,但似乎不起作用 function toggle(ths) { $(ths).toggleClass("btnColor"); $("#tb").toggleClass("btnColorR") var secondCounter = 0; var minutes = 0; var t; var tim

我正在寻找:

计数时间-以秒和分钟为单位。 我的计数我想它开始时,一个按钮被点击,并停止,如果再次点击。 我点击时从零开始计算每个按钮

这是我试过的,但似乎不起作用

function toggle(ths) {
    $(ths).toggleClass("btnColor");
    $("#tb").toggleClass("btnColorR")
    var secondCounter = 0;
    var minutes = 0;
    var t;
    var timer_is_on = 0;
    var clicked = $(ths).val();
    secondCounter = secondCounter + 1;
    if ((secondCounter % 60 == 0 )&&(clicked)) {
        minutes += 1;
        secondCounter = 0;
    }
    $("#setCount").html(" downtime type: " + clicked + " minutes: " + minutes + "     seconds: " + secondCounter);
}

若您发布调用
toggle()
函数的html代码,那个么问题就很清楚了


我猜每次调用
toggle()
函数时,
minutes
secondCounter
都会重置为0。

我假设您需要一种方法来查找两次单击按钮之间经过的时间

还假设在第二次单击时,您希望知道自上次单击以来所用的时间,并重置计数器

如果是这样,我有一个简单的JSFIDLE,您可以查看:

HTML代码:

<a href="#" id="btn">This is a button</a>

如果您想知道按钮被按下的时间,可以尝试以下代码:

var displayElapsedTime,
    startTimeCounter,
    isDown;

isDown = function isDown($this) {
  return $this.is('.down');
};

displayElapsedTime = function displayElapsedTime($this) {
  var time = new Date((new Date()) - $this.data('time'));
  $this.val(time.getMinutes() + ':' + time.getSeconds());
};

startTimeCounter = function startTimeCounter($this) {
  setTimeout(function() {
    displayElapsedTime($this);
    if(isDown($this)) {
      startTimeCounter($this);
    }
  }, 1000);
};

$('input').on('click', function() {
  var $this = $(this);

  if(!isDown($this)) {
    $this.data('time', new Date());
    startTimeCounter($this);
  }

  $this.toggleClass('down');
});

你可以在这里看到工作示例:

我看不到一个循环,在用户点击“再次”按钮之前,你一直在增加“secondCounter”,非常感谢,伙计,我对此很陌生,我的最后一个问题是,如果第一次点击,我如何在网页上显示时间增量,第二次点击时,它必须显示经过的时间,因为我想看到网页上的计数增量(5h:18m:56s),而不仅仅是在幕后增加,我很抱歉打扰了很多人,我真的不知道这一点,我的最后一个问题是,如果第一次单击,我如何在网页上显示时间增量,而当第二次单击时,它必须显示时间的流逝doing@C_Major我已经添加了您请求的功能:现在按钮上显示了经过的时间。与示例的链接也已更新。哇!伟大的工作人主要的问题是它的ternite,再次感谢它的工作完美
var displayElapsedTime,
    startTimeCounter,
    isDown;

isDown = function isDown($this) {
  return $this.is('.down');
};

displayElapsedTime = function displayElapsedTime($this) {
  var time = new Date((new Date()) - $this.data('time'));
  $this.val(time.getMinutes() + ':' + time.getSeconds());
};

startTimeCounter = function startTimeCounter($this) {
  setTimeout(function() {
    displayElapsedTime($this);
    if(isDown($this)) {
      startTimeCounter($this);
    }
  }, 1000);
};

$('input').on('click', function() {
  var $this = $(this);

  if(!isDown($this)) {
    $this.data('time', new Date());
    startTimeCounter($this);
  }

  $this.toggleClass('down');
});