0

好的,事情就是这样,我为幻灯片编写了一个简单的代码,它可以正常工作,并且正如我所期望的那样,就是这样:

var slideShowImage = document.getElementById("slideShowImage");
var images = ["_Images/Image_01.jpg","_Images/Image_02.jpg","_Images/Image_03.jpg","_Images/Image_04.jpg","_Images/Image_05.jpg","_Images/Image_06.jpg","_Images/Image_07.jpg"];
var imageIndex = 0;

function changeImage (){
    slideShowImage.setAttribute ("src",images[imageIndex]);
    imageIndex++;
    if (imageIndex >= images.length){
            imageIndex = 0;
        }   
    }

setInterval (changeImage,3000);

但是由于我还在学习javaScript,所以我想改变逻辑来品味自己,我重写了代码,但它不起作用,我不知道为什么......希望有人能告诉我为什么它不...

var imageId = document.getElementById("slideShowImage");
var imageNumber = 1;
var imageName = "_Images/Image_0"+imageNumber+".jpg";

function changeImage (){
    imageId.setAttribute("Src",imageName);
    imageNumber++;
    if (imageNumber==7){
        imageNumber=1;
        }
    }
setInterval(changeImage,1000);
4

5 回答 5

2

在第二种方法中,var imageName 被分配给一个静态值,即“_Images/Image_0”+imageNumber+“.jpg”,根据第一个答案,您需要重新计算该变量的值。

相反,您可以将 imageName 编写为返回计算值的函数

var imageName = function(){ return "_Images/Image_0"+imageNumber+".jpg"; }

并在 changeImage 内部调用

function changeImage (){
    imageId.setAttribute("Src",imageName());
    imageNumber++;
    if (imageNumber==7){
        imageNumber=1;
        }
    }
于 2013-04-10T09:38:48.600 回答
0

您可以替换您的代码 imageId.setAttribute("Src",imageName); 使用以下 imageId.src = imageName;

于 2013-04-10T09:44:43.973 回答
0
var imageName = "_Images/Image_0"+imageNumber+".jpg";

imageName每次数字更改时,您都需要更新。否则,此字符串固定为 Image_01.jpg。

于 2013-04-10T09:35:58.227 回答
0

您的imageName变量永远不会被更新。您必须在每次 chageImage 调用时更新它。

var imageId = document.getElementById("slideShowImage");
var imageNumber = 1;
var imageName = "_Images/Image_0"+imageNumber+".jpg";

function changeImage (){
    imageNumber++;
    imageName = "_Images/Image_0"+imageNumber+".jpg";
    imageId.setAttribute("Src",imageName);
    if (imageNumber==7){
        imageNumber=1;
    }
}
setInterval(changeImage,1000);
于 2013-04-10T09:37:37.970 回答
0

您犯的错误是每次迭代都不会评估您版本中的图像名称。

var imageId = document.getElementById("slideShowImage");
var imageNumber = 1;
setInterval(function() {
  imageId.setAttribute("src","_Images/Image_0"+imageNumber+"jpg");
  imageNumber++;
  if (imageNumber == 7) imageNumber = 1;
},1000);

这将导致您的代码实际工作。我获取了图像路径并将其带入函数中,以便在每次迭代时对其进行评估,这是主要错误。

请记住,您的图像不会立即加载;将它们设置为每次转换 1 秒是不明智的。在实践中,您希望将所有这些预加载到后台某个不可见的地方,以保证即时调用。

于 2013-04-10T09:38:33.167 回答