我正在尝试在某些图像上运行循环,其中我多次更改img的src。我想让它在完成后再循环回来,这是一个连续的图像滚动。我已经设置了这样的功能:
function img_loop(){
console.log('test');
console.log(this_value.attr('src'));
this_value
.queue(function(next) {
this_value.attr('src',new_img_src); next();
})
.delay(2000)
.queue(function(next) {
this_value.attr('src',new_img_src_2); next();
})
.delay(2000)
.queue(function(next) {
this_value.attr('src',img_src); next();
})
.delay(2000)
.queue(function() {
img_loop();
});
}
img_loop();
一次成功运行。好奇的是它记录到控制台,运行一次,然后再次登录到控制台,这意味着它再次被称为函数,但我想它在第一个队列函数处停止。我在第一个队列函数中运行了一个控制台,可以确认它第二次没有运行。
我假设在回调函数中使用queue()有限制吗?关于它为什么不再运行的任何想法?
在参考下面的答案时,我尝试使用带有参数的函数,然后让它循环放回该参数,但不幸的是,这不起作用:
function img_loop(the_image){
var that = the_image;
console.log(the_image);
the_image
.queue(function(next) {
the_image.attr('src',new_img_src); next();
})
.delay(2000)
.queue(function(next) {
the_image.attr('src',img_src); next();
})
.delay(2000)
.queue(function() {
img_loop(that);
});
}
img_loop(me);
当我在控制台中将其注销时,它会显示相同的内容,因此它会在循环运行一次后保留该值。我不确定为什么它不再触发?
只是在其他人有想法的情况下显示我的进展?
答案 0 :(得分:1)
如果您在撰写this_value
时谈论的是this
关键字(函数的上下文),则this
的值可能会在第二次调用img_loop
时丢失1}}。
修改强>
通过调用.queue
或致电next()
.dequeue()
调用中再次考虑您的代码
我已经对以下代码进行了修改,试试这个。
function img_loop(the_image){
console.log(the_image);
the_image
.queue(function(next) {
the_image.attr('src',new_img_src); next();
})
.delay(2000)
.queue(function(next) {
the_image.attr('src',new_img_src_2); next();
})
.delay(2000)
.queue(function(next) {
the_image.attr('src',img_src); next();
})
.delay(2000)
.queue(function() {
img_loop.(the_image);
$(this).dequeue();
});
}
img_loop(me);