好的,这就是问题,我为幻灯片编写了一个简单的代码,它的工作方式正如我预期的那样,就是这样:
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);
答案 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;