简化Javascript图像数组

简化Javascript图像数组,javascript,arrays,onmouseover,Javascript,Arrays,Onmouseover,简化此javascript数组的最佳方法是什么? 我被要求创建一个页面,幻灯片显示它将使用的4幅图片 onMouseOver和onMouseOut事件。我还没有把那部分贴上 这里有密码。这是我开始的地方,但看起来太长了。可以 有人能帮我简化一下吗?提前谢谢 var season = Array(); var start = 0; var timeDelay=3000; season[0]=new Image(); season[0].src="winter.jpg"; season[1]

简化此javascript数组的最佳方法是什么? 我被要求创建一个页面,幻灯片显示它将使用的4幅图片 onMouseOver和onMouseOut事件。我还没有把那部分贴上 这里有密码。这是我开始的地方,但看起来太长了。可以 有人能帮我简化一下吗?提前谢谢

 var season = Array();
 var start = 0;
 var timeDelay=3000;

season[0]=new Image();
season[0].src="winter.jpg";
season[1]=new Image();
season[1].src="spring.jpg";
season[2]=new Image();
season[2].src="summer.jpg";
season[3]=new Image();
season[3].src="fall.jpg";

function changeSeason(){
    var size= season.length - 1;
    if( start < size ) {
         start++;
    }
    else {
         start = 0;
    }
    document.times.src= season[start].src;
    timeout=setTimeout('changeSeason()', timeDelay);
}
var seasure=Array();
var start=0;
var时间延迟=3000;
季节[0]=新图像();
季节[0].src=“winter.jpg”;
季节[1]=新图像();
季节[1].src=“spring.jpg”;
季节[2]=新图像();
季节[2].src=“summer.jpg”;
季节[3]=新图像();
季节[3]。src=“fall.jpg”;
函数{
变量大小=季节长度-1;
如果(开始<大小){
启动++;
}
否则{
开始=0;
}
document.times.src=季节[start].src;
超时=设置超时('changeSeason()',timeDelay);
}

这里有一个更简单的版本,可以做完全相同的事情

var season = ["winter.jpg", "spring.jpg", "summer.jpg", "fall.jpg"];
var timeDelay=3000;
var seasonCount = 0;

function changeSeason(){
    document.times.src = season[++seasonCount % season.length];
    setTimeout(changeSeason, timeDelay);
}
首先,您不需要一个图像数组-您只需要更改src属性,所以您只需要一个字符串数组。我还简化了
changepreason()
函数,使其增加
seasurecount
%seasure.length
意味着当它达到数组长度时将重置为0


这假设您在冬季开始幻灯片放映,如您的示例所示。

要减少代码,您可以使用
Array.prototype.map
迭代图像源列表,然后使用源集将其转换为HTMLImage元素

var sources=['winter.jpg'、'spring.jpg'、'summer.jpg'、'fall.jpg']
var seasures=sources.map(函数(src){
var img=新图像()
img.src=src
返回img
})

在我看来,您只使用元素的src属性。 只保留路径有什么意义

var season = ['winter.jpg', 'spring.jpg', 'summer.jpg', 'fall.jpg'];

document.times.src = season[start];