【发布时间】:2020-07-10 07:21:39
【问题描述】:
images: [
{
img: 'car_0.png',
time: 3000,
},
{
img: 'car_1.png',
time: 500,
},
{
img: 'car_2.png',
time: 500,
},
{
img: 'car_3.png',
time: 1000,
},
],
我需要在我的页面中显示图像。 time 是图像应该显示在页面上的时间。例如:
第一张照片 car_0.png 在页面上显示 3 秒。 3 秒后变为第二张图片,显示 0.5 秒...
这个方法我写过但是不行:
if(images !== undefined) {
for(let i = 0; i < images.length; i++) {
setTimeout(() => {
this.images = images[i].img
}, images[i].time + images[i + 1].time)
}
}
编辑:
我将方法更改为:
if(images !== undefined) {
let time
for(let i = 0; i < images.length; i++) {
if(i > 0) {
time = time + images[i].time
}
else {
time = images[i].time
}
console.log(time)
setTimeout(() => {
this.images = images[i].img
}, time)
}
}
现在在console.log(time)我有价值:
3000
3500
4000
5000
但还是不能正常工作,第一张图片应该立即出现并显示3秒。现在会在 3 秒后出现
【问题讨论】:
-
images[i + 1].time将在最后一次迭代中打破循环 -
您希望将所有先前“图像”的总和 + 当前一个作为超时,而不是当前一个 + 下一个。
-
您需要
img元素来显示图像,然后更改该元素的src属性,而不是使用未定义的images数组成员。
标签: javascript for-loop settimeout