我希望能够点击一个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");
}
});
答案 0 :(得分: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;
}
答案 1 :(得分: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;
}
});
答案 2 :(得分:1)
您需要使用.clearInterval()
来停止执行。
以下是代码:( THE WORKING DEMO )
$("#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);
}
};
}()));