1

我希望能够单击一个 id 为 pause 的元素来开始计算时间对象中的元素,如果我重新单击暂停,它将停止它并重新单击启动它,就像 JQuery 中的切换功能一样,但使用一个 setInteval 函数我将如何去做呢?

$("#pause").click(function(ffe) {
  if(on == true) {
    on = false 
    alert("on");
  }
  else {
    on = true;
    alert("off");
  }
  if(on == false) {
    setInterval(function() {
      $("#timet ul").append("<li>" + $("#time ul")
                    .children('li').length +"</li>");

    }, 100);
  }
  else {

    alert("Error");
  }
});
4

3 回答 3

5

一种经典的技术是使用单个主 setInterval 循环并简单地使用 if..else 逻辑来确定需要运行的内容。这就是许多 javascript 游戏的工作方式:

var on = true;

// Our master scheduler:
setInterval(function() {
    if (on) {
      $("#timet ul").append("<li>" + $("#time ul")
         .children('li').length +"</li>");
    }
}, 100);

// Code to handle the pause button
$("#pause").click(function(ffe) {
    on = !on;
}
于 2012-08-08T03:50:15.167 回答
1

您可以使用该setTimeout功能,如果您想运行该功能一次,setInterval连续运行,请尝试以下操作:

var on = false;
$("#pause").click(function(ffe) {
  if (on) {
      on = false;
      setTimeout(function() {
           $("#timet ul").append("<li>" + $("#time ul")
                    .children('li').length +"</li>");
      }, 100);
  } else {
      on = true; 
  }
});
于 2012-08-08T03:32:25.490 回答
1

您需要使用.clearInterval()来停止执行。

这是代码:(工作演示

$("#pause").click((function () {
    var interId = null;
    var $ul = $("#timet ul");
    return function (e) {
        if (interId) {
            $(this).text("start");
            clearInterval(interId);
            interId = null;
        } else {
            $(this).text("pause");
            interId = setInterval(function () {
                $ul.append($('<li>').text($('li', $ul).length));
            }, 100);
        }
    };
}()));​
于 2012-08-08T03:35:24.333 回答