尝试在最后一项上停止 setInterval 循环
Trying to stop setInterval loop on last item
我正在尝试使用 setInterval 循环浏览列表,在直到最后一项时更改类。它正在工作,但我无法阻止它骑自行车。我还想让最后一项以一个独特的类结束。这就是我目前所得到的。
<ul id="provision1" class="provisioning-list">
<li class="in-progress">Configure Active Directory</li>
<li>Create User Accounts and Groups</li>
<li>Build Server Configurations</li>
<li>Create NTFS</li>
<li>Create Network</li>
<li>Apply SDN Rules</li>
<li class="last">Configure Users</li>
</ul>
像这样的东西
var toggleSlide = function(){
$("#provision1 li.in-progress").removeClass('in-progress').addClass('complete')
.next().add("#provision1 li:first").last().addClass("in-progress");
}
setInterval(toggleSlide, 1000);
试试这个
var toggleSlide = function(){
var current = $("#provision1 li.in-progress"),
next = current.next();
// stop if there is no next element or we reached the .last element
if (current.is('.last') || next.length === 0){
clearInterval( timer );
return;
}
current.removeClass('in-progress');
next.addClass('in-progress');
},
timer = setInterval(toggleSlide, 1000);
演示
var toggleSlide = function() {
var current = $("#provision1 li.in-progress"),
next = current.next();
// stop if there is no next element or we reached the .last element
if (current.is('.last') || next.length === 0) {
clearInterval(timer);
return;
}
current.removeClass('in-progress');
next.addClass('in-progress');
},
timer = setInterval(toggleSlide, 1000);
.in-progress{color:red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="provision1" class="provisioning-list">
<li class="in-progress">Configure Active Directory</li>
<li>Create User Accounts and Groups</li>
<li>Build Server Configurations</li>
<li>Create NTFS</li>
<li>Create Network</li>
<li>Apply SDN Rules</li>
<li class="last">Configure Users</li>
</ul>
要停止setInterval();
您可以使用如下clearInterval();
:
var intv = setInterval(toggleSlide, 1000);
clearInterval(intv);
使用以下更改 JS
var toggleSlide = function(){
var $cur_element = $("#provision1 li.in-progress");
$cur_element.removeClass('in-progress')
.addClass('complete');
if($cur_element.hasClass("last")) {
clearInterval(interval_var);
} else {
$cur_element.next().add("#provision1 li:first")
.last().addClass("in-progress");
}
}
var interval_var = setInterval(toggleSlide, 1000);
JSFiddle
相关文章:
- 如何从对象数组中获取最后一项
- 为什么只有最后一项显示,而不是全部显示
- 删除最后一项jquery
- $q.all当输入数组中的一项不是promise时,Typescript检查器失败
- 为什么我的“for”循环只获取 html 中的最后一项
- 一次循环遍历一组
- 我无法将下拉列表的默认值设置为最后一项
- 流星批量插入仅插入最后一项
- 我怎么能知道元素是最后一项
- 如何删除WinJS组绑定列表的最后一项
- empty().append()追加循环中的最后一项
- 将属性添加到 for 循环中的最后一项
- for 循环中的 addEventListener 始终添加到最后一项
- CasperJS只从我的for循环中多次发布最后一项
- JavaScript for 循环只返回数组中的最后一项
- 尝试在最后一项上停止 setInterval 循环
- Node.js http.get in 循环仅获取最后一项
- 无法对循环中的最后一项应用函数
- 循环遍历数组中的项目以分配 data-id,但仅获取数组中的最后一项
- 循环返回数组的最后一项