我正在尝试遍历几个不同的值。这个想法是,如果用户单击一个按钮,循环应该开始运行,一旦它运行它应该显示一段代码(在示例中是一些基本文本)。我试图显示一种包含不同信息的对话框,持续时间取决于时间值(毫秒),所以第一个以 3 秒开始,之后第二个应该可见 8 秒,之后最后一个应该运行 2 秒。
我必须进行更改,以便每个循环的时间都不同。下面的示例有一个终止开关,以便我可以终止循环。我希望有人能解决这个问题,我已经尝试了很多小时。
//插件选项
step:[
{
time: 3000,
name: 'mike',
age: 30
},
{
time: 8000,
name: 'john',
age: 37
},
{
time: 2000,
name: 'jessica',
age: 25
}
]
// 循环
var timeouts = [];
$('.click').click(function(){
$.each(options.step, function(i, value){
var time = value.time;
timeouts.push(setTimeout(function(){
$('#target ul').append('<li>'+value.name+'-'+value.age+'</li>')
},time));
});
});
// 复位按钮
$('.stop').click(function(){
$.each(timeouts, function (_, id) {
clearTimeout(id);
});
timeouts = [];
});
编辑:问题是它在循环中需要一个额外的值(0)(第一个值应该是 0),因为第一个 setTimeout 在 3 秒后运行,这意味着其余的将使用那里邻居的值。