Javascript 为什么我不能引用图像数组?

Javascript 为什么我不能引用图像数组?,javascript,html,Javascript,Html,我试图连续交换阵列中的图像,但代码没有获得图像源,为什么会发生这种情况 function nextPic(){ var picCollection =["pic_bulbon.gif","pic_bulboff.gif"]; for(i=0; i<picCollection.length; i++){ document.getElementById("myImage").src = picColle

我试图连续交换阵列中的图像,但代码没有获得图像源,为什么会发生这种情况

function nextPic(){
    var picCollection =["pic_bulbon.gif","pic_bulboff.gif"];
    for(i=0; i<picCollection.length; i++){
        document.getElementById("myImage").src = picCollection[i].src;
    }
}

function triggers(){
    setInterval(nextPic,500);
}
函数nextPic(){
var picCollection=[“pic_bulbon.gif”,“pic_bulboff.gif”];

对于(i=0;i您的数组中没有
src
键。您可以使用


document.getElementById(“myImage”).src=picCollection[i];

您的代码应该与下面类似

function nextPic(){
  var picCollection = ["./pic_bulbon.gif","./pic_bulboff.gif"];

  for(i = 0; i < picCollection.length; i++){
    document.getElementById("myImage").src = picCollection[i];
  }
}
函数nextPic(){
var picCollection=[”/pic_bulbon.gif“,”/pic_bulboff.gif“];
对于(i=0;i
”/pic_bulbon.gif“
可能需要根据您的文件结构和您试图访问的gif的存储位置进行更改

如果你能提供你的文件结构的截图,我可以告诉你你需要什么

您遇到的另一个问题是试图访问
picCollection[i].src


但是
picCollection[i]
只是一个字符串数组而不是对象。

您需要为picture number创建一个全局变量。然后使用传递给
setInterval
的回调函数。上面的代码将只显示数组的最后一个图像

设pic=0;
const picCollection=[“pic_bulbon.gif”,“pic_bulboff.gif”];
函数nextPic(){
document.getElementById(“myImage”).src=picCollection[pic];
log(“显示的图片是”,picCollection[pic])
pic++;
if(pic==picCollection.length){
pic=0;
}
}
函数触发器(){
设置间隔(nextPic,500);
}
触发器()

可能是您的代码应该是

var picCollection =["pic_bulbon.gif","pic_bulboff.gif"];
var i=0;
var interval;
function nextPic(){
    document.getElementById("myImage").src = picCollection[i];
    // if you want to repeat for show image again and again tehn use below line
    i= (i+1) % picCollection.length;

    // if you want not to repeat again then use below line
    // if(i+1>=picCollection.length) clearInterval(interval);
   
}

function triggers(){
    interval=setInterval(nextPic,500);
}

在这里,您必须在全局中定义图像名称数组,该数组应可在所有Desired函数中访问。如果您将setInterval引用存储在变量中并通过clearInterval清除它,这是很好的。

可能它不知道图像文件的位置。您可以尝试从Onlinet使用股票图像。我猜您还存在其他问题rect但代码仍不起作用。代码将始终显示最后一幅图像,使用
i
而不使用
let
将不显示图像。再次测试代码并尝试解决所有问题。这将始终显示最后一幅图像,因为look将始终结束。请检查我的答案。此外,如果没有let,您也不应使用
i
在循环中。否则它将成为全局变量是的,很好的解决方法!我把它和js文件放在同一个文件夹中,我想位置不是主要问题。我可以知道为什么我需要将它设置为全局变量吗?为什么使用for loop不起作用?@user14811578循环是同步的(意味着一个块将紧接着另一个块运行)。但在您的情况下,您希望延迟
500ms
。您需要将
pic
设置为全局变量,因为如果在函数中设置它,您将丢失当前图像的轨迹。您应该将
picCollection
声明为全局变量,以防止重复声明相同的变量。@user14811578如果您不取消德斯坦,你可以问。好的。现在明白了。非常感谢你的帮助。谢谢。