我需要一个每隔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>
答案 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">