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

发布于 2024-09-08 17:35:54 字数 637 浏览 3 评论 0原文

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

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

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

马蒂·莱恩

I have a working script like this:

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);
    });

});

Yeah, you guessed right. It's made to change YouTube's thumbnail on interval. However, I have no idea, how to create the interval. It now changes the thumbnail to 1.jpg, which is another thumbnail, but it should next change the image to 2.jpg in 1 second and so on.

The whole snippet should probably be written from scratch. Advice?

Hope you understood :-D

EDIT: I changed the variable-names from finnish words, I don't use them. Just in this example.

Martti Laine

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

浮世清欢 2024-09-15 17:35:54

默认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');
    });
});

new and default are reserved words in javascript. You cannot use them.

To create an interval you should use setInterval:

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

[See it in action]

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');
    });
});
清晨说晚安 2024-09-15 17:35:54

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

HTML

<div class="video-thumb"> 
    <img src="http://i2.ytimg.com/vi/Q1yo3mco40U/default.jpg" />
</div>
<div id="counter">0</div>​

JavaScript

$(document).ready(function() {

    var images = [];

    images[0] = "http://i2.ytimg.com/vi/Q1yo3mco40U/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);
    });

});

You can see my answer working here:

HTML

<div class="video-thumb"> 
    <img src="http://i2.ytimg.com/vi/Q1yo3mco40U/default.jpg" />
</div>
<div id="counter">0</div>​

JavaScript

$(document).ready(function() {

    var images = [];

    images[0] = "http://i2.ytimg.com/vi/Q1yo3mco40U/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);
    });

});
巴黎夜雨 2024-09-15 17:35:54
 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);
 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);
安人多梦 2024-09-15 17:35:54

谢谢你们的精彩回答! (不)幸运的是我已经通过 jQuery 的计时器插件创建了这个。这是我的工作代码:

$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');
    });

});

Thanks guys for great answers! (Un)fortunately I already created this via jQuery's Timers-plugin. Here's my working code:

$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');
    });

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文