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如果您不取消德斯坦,你可以问。好的。现在明白了。非常感谢你的帮助。谢谢。