每3秒更换一次图片的功能

时间:2016-11-22 00:51:28

标签: javascript

我需要一个每隔3秒更换图片的功能。这是我的代码,它必须使用案例结构,不确定什么是错的,有什么建议吗?

<script>
 "use strict";
  var currentImage = 1;
  var autoAdvance = setInterval(ChangeAd, 3000);

  function ChangeAd() {
  var image = document.getElementsByTagName"img");
     switch(currentImage){
        case 1:
           currentImage = 2;
           return image[o].src = "concert2.gif";
           break;
        case 2:
           currentImage = 3;
           return image[o].src = "concert3.gif";
           break;
        case 3:
           currentImage = 4;
           return image[o].src = "concert4.gif";
           break;
        case 4:
           currentImage = 5;
           return image[o].src = "concert5.gif";
           break;
        case 5:
           currentImage = 1;
           return image[o].src = "concert1.gif";
           break;
     }

  } 
</script>

1 个答案:

答案 0 :(得分:1)

首先,这个:

 document.getElementsByTagName"img")

应该是这样的:

 document.getElementsByTagName("img")

第二:image[o].src使用字母o,并应使用数字0

第三,case分支不需要返回任何内容。他们只需要设置值计数器。使用return有两个原因。第一种是简单地退出函数并将控制返回给调用者。在您的情况下,break语句已经执行了此操作,因此return无效。使用return的第二个原因是让函数将整体结果返回给调用者。这不是你在这里之后的事情 - 你不想从函数发回一个值,你只是想让函数更新图像的来源。

第四,不需要重复图像源的设置。只需将变量设置为正确的值,然后将源更改为switch

  "use strict";
  var currentImage = 1;
  var autoAdvance = setInterval(ChangeAd, 3000);
  var image = document.getElementsByTagName("img");
  var source = "";

  function ChangeAd() {
     switch(currentImage){
        case 1:
           currentImage = 2;
           break;
        case 2:
           currentImage = 3;       
           break;
        case 3:
           currentImage = 4;        
           break;
        case 4:
           currentImage = 5;       
           break;
        case 5:
           currentImage = 1;     
           break;
     }
    
     // Once you break out of the matched case branch,
     // you'll wind up here and all you need to do is
     // use the value of your counter to set up the image:
     source = "concert" + currentImage + ".gif";
     image[0].src = source;
     image[0].alt = source;   
  }
<img src="someimg.jpg" alt="some image">