一个不起作用的简单javaScript代码@ _ @

时间:2013-04-10 09:33:05

标签: javascript

好的,这就是问题,我为幻灯片编写了一个简单的代码,它的工作方式正如我预期的那样,就是这样:

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);

5 个答案:

答案 0 :(得分: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;
        }
    }

答案 1 :(得分:0)

var imageName = "_Images/Image_0"+imageNumber+".jpg";

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

答案 2 :(得分: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);

答案 3 :(得分: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次是不明智的。在实践中,你想要在背景中预先加载所有这些隐形的东西,这样可以保证即时回忆。

答案 4 :(得分:0)

您可以替换您的代码 imageId.setAttribute(“Src”,图像名称); 以下内容 imageId.src = imageName;