在jQuery中创建一个更改图像的间隔?

我有一个像这样的工作脚本:

jQuery(document).ready(function(){ $('.video-thumb img').bind('mouseover',function(){ var new = $(this).attr('src').replace(/default.jpg/,'1.jpg'); $(this).attr('src',new); }).bind('mouseout',function(){ var default = $(this).attr('src').replace(/[0-9].jpg/,'default.jpg'); $(this).attr('src',default); }); }); 

是的,你猜对了。 这是为了在间隔时间更改YouTube的缩略图。 但是,我不知道如何创建间隔。 它现在将缩略图更改为1.jpg,这是另一个缩略图,但它应该在1秒后将图像更改为2.jpg,依此类推。

整个片段应该是从头开始编写的。 建议吗?

希望你明白:-D

编辑:我改变了芬兰语中的变量名,我不使用它们。 就在这个例子中。

Martti Laine

新的默认是javascript中的保留字 。 你不能使用它们。

要创建间隔,您应该使用setInterval

 setInterval(function() { // do something // ... }, 1000); // <- 1000ms = 1s 

[ 看到它在行动 ]

 jQuery(document).ready(function() { var timer, imgsrc, cnt = 0; $('.video-thumb img').bind('mouseover', function() { // if there is no timer if (!timer) { var $t = $(this); // get the image src imgsrc = $t.attr('src').replace('default.jpg',''); // start a new timer timer = setInterval(function() { // periodically change the src $t.attr('src', imgsrc + (cnt+1) + ".jpg"); // and adjust the counter cnt = ( cnt + 1 ) % 3; // 0, 1, 2 }, 1000); // <- 1000ms = 1s } }).bind('mouseout',function() { // stop rotation if (timer) { clearInterval(timer); timer = null; } // set the default img $(this).attr('src', imgsrc + 'default.jpg'); }); }); 

你可以在这里看到我的答案:

HTML

 
0

JavaScript的

 $(document).ready(function() { var images = []; images[0] = "http://sofzh.miximages.com/jquery/default.jpg"; images[1] = "http://i2.ytimg.com/vi/ivmoCcYLrEk/default.jpg"; images[2] = "http://i3.ytimg.com/vi/f7d8luQ6p2Q/default.jpg"; images[3] = "http://i1.ytimg.com/vi/XzFmOKNf8sc/default.jpg"; images[4] = "http://i2.ytimg.com/vi/-2m1e4g2MFM/default.jpg"; images[5] = "http://i1.ytimg.com/vi/lK2TSYBh7fw/default.jpg"; var loop; var i = 0; var counter = $("#counter"); $('.video-thumb img').mouseover(function() { var image = this; loop = setInterval(function() { if (i < images.length - 1) { i++; $(image).attr('src',images[i]); } else { i = 0; $(image).attr('src',images[i]); } counter.html(i); }, 1000); }).mouseout(function() { clearInterval(loop); i = 0; $(this).attr('src', images[i]); counter.html(i); }); }); 
  var newImg = $(this).attr('src').replace(/default.jpg/,'1.jpg'); $(this).attr('src',newImg); window.setTimeout(function(){ newImg = $(this).attr('src').replace(/1.jpg/,'2.jpg'); $(this).attr('src',newImg); },1000); 

谢谢你们的回答! (联合国)幸运的是我已经通过jQuery的Timers-plugin创建了这个。 这是我的工作代码:

 $j(document).ready(function(){ $j('.video-thumb img').bind('mouseover',function(){ var c = 1; $j(this).everyTime(1000,'interval',function(i){ $j(this).attr('src',$j(this).attr('src').replace(/(default|[0-9]).jpg/,c+'.jpg')); if(c<3) { c++; } else { c = 1; } }); }).bind('mouseout',function(){ $j(this).attr('src',$j(this).attr('src').replace(/(default|[0-9]).jpg/,'default.jpg')); $j(this).stopTime('interval'); }); });