我希望能够单击一个id为pause的元素来开始计数time对象中的元素,如果我再次单击pause,它将停止它,并重新单击start它,就像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");
}
});发布于 2012-08-08 11:50:15
一种经典的技术是使用单个主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-08 11:32:25
您可以使用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-08 11:35:24
您需要使用.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);
}
};
}()));https://stackoverflow.com/questions/11857205
复制相似问题