【发布时间】:2017-04-23 06:21:35
【问题描述】:
我正在尝试让按钮从默认的“这将更改”更改为“新消息”,然后每 2 秒更改为“someButton”,然后单击停止。
到目前为止,我有这个代码:
var timeouts = [];
var someArray = {button: 'new Message', button: 'Some Btn'};
$(document).ready(function(){
var i = 2000;
$.each(someArray, function(index, value){
timeouts.push(setTimeout(function(){
$(index).html(value);
},i));
i = i + 2000;
});
$('#stop').click(function(){
$.each(timeouts, function (_, id) {
clearTimeout(id);
});
timeouts = [];
$(button).html('Some Btn');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type='button'>
This will change
</button>
<a id='stop' href='#'>Stop</a>
似乎忽略了第一个setTimeout(),或者新消息索引上没有运行超时。然后当我按下点击按钮时,没有超时被清除?
如果我出错了,我们将不胜感激。
更新:我想让它尽可能地面向 jQuery,谢谢!
【问题讨论】:
-
使用 setInterval 而不是没有“超时”数组。
-
如何清除间隔?我正在尝试坚持使用 JQuery 来做到这一点,@ryanlutgen
-
var myinterval = setInterval(function() { }); clearInterval(myinterval)
-
首先,您的
someArray不是数组。它是一个对象 -
kdot,请在问题正文中提及您的所有疑问或问题。和@ryanlutgen,最好你发布答案,这样你就可以获得奖励。
标签: javascript jquery html timeout