简化Javascript图像数组

时间:2017-04-02 14:49:24

标签: 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]=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);
}

3 个答案:

答案 0 :(得分:0)

这是一个更简单的版本,可以做同样的事情......

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属性,因此您只需要一个字符串数组。我还简化了changeSeason()函数,使其递增seasonCount% season.length意味着它在达到数组长度时将重置为0.

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

答案 1 :(得分:0)

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

&#13;
&#13;
var sources = ['winter.jpg', 'spring.jpg', 'summer.jpg', 'fall.jpg']

var seasons = sources.map(function(src) {
  var img = new Image()
  img.src = src
  return img
})

console.log(seasons)
&#13;
&#13;
&#13;

答案 2 :(得分:0)

据我所知,你只使用元素的src属性。 什么是保持路径?

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

document.times.src = season[start];