带循环的 setAttribute
setAttribute with a loop
我正在尝试通过循环将 src 属性设置为多个图像。我有 8 张图片,我想将这 8 张图片插入我的 html。我在来自 JSON 文件的数组上使用 for of 循环。我的 JSON 好像没问题,因为我可以 console.log 属性源的好值。值如下所示:“images/img1.png”。 img1 变成 img2 ...
问题是它将 images/img8.png 所有图像放入控制台,而 html.
中只有一张图像
我试着输入 querySelectorAll('.image') 但它说 TypeError: img.setAttribute is not a function
.
我试图将另一个循环放入 for of 循环中,但它形成了一个无限循环,仍然是 images/img8.png.
这是我的代码:
.then(response => response.json())
.then(data => {
let img = document.querySelectorAll('.image')
for (const item of data) {
img.setAttribute('src', item.source)
console.log(img)
}
}).catch(err => console.error("Une erreur est survenue", err))
这是我的数组
[
{
"image_name": "Image1",
"image_id": "1",
"source": "images/img1.png"
},
{
"image_name": "Image2",
"image_id": "2",
"source": "images/img2.png"
},
{
"image_name": "Image3",
"image_id": "3",
"source": "images/img3.png"
},
{
"image_name": "Image4",
"image_id": "4",
"source": "images/img4.png"
},
{
"image_name": "Image5",
"image_id": "5",
"source": "images/img5.png"
},
{
"image_name": "Image6",
"image_id": "6",
"source": "images/img6.png"
},
{
"image_name": "Image7",
"image_id": "7",
"source": "images/img7.png"
},
{
"image_name": "Image8",
"image_id": "8",
"source": "images/img8.png"
}
]
您知道错误是什么吗?
谢谢。
querySelectorAll
returns 一个类似数组的列表。您可能需要迭代该列表以及您的图像列表
.then(response => response.json())
.then(data => {
let img = document.querySelectorAll('.image')
for (var i =0;i<data.length;i++) {
img[i].setAttribute('src', item[i].source)
}
}).catch(err => console.error("Une erreur est survenue", err))
试试这个
const images = document.querySelectorAll('.image'); // a collection
....
.then(response => response.json())
.then(data => data.forEach(({source,image_name},i) => {
images[i].src = source;
images[i].alt = image_name;
})
).catch(err => console.error("Une erreur est survenue", err))
https://jsfiddle.net/mplungjan/sehx2bc4/
如果图像的 ID 与 image_id 相匹配,您可以使用它来代替集合和 [i]
.then(response => response.json())
.then(data => data.forEach(({source,image_name, image_id}) => {
const image = document.getElementById(image_id);
image.src = source;
image.alt = image_name;
})
).catch(err => console.error("Une erreur est survenue", err))
我正在尝试通过循环将 src 属性设置为多个图像。我有 8 张图片,我想将这 8 张图片插入我的 html。我在来自 JSON 文件的数组上使用 for of 循环。我的 JSON 好像没问题,因为我可以 console.log 属性源的好值。值如下所示:“images/img1.png”。 img1 变成 img2 ... 问题是它将 images/img8.png 所有图像放入控制台,而 html.
中只有一张图像我试着输入 querySelectorAll('.image') 但它说 TypeError: img.setAttribute is not a function
.
我试图将另一个循环放入 for of 循环中,但它形成了一个无限循环,仍然是 images/img8.png.
这是我的代码:
.then(response => response.json())
.then(data => {
let img = document.querySelectorAll('.image')
for (const item of data) {
img.setAttribute('src', item.source)
console.log(img)
}
}).catch(err => console.error("Une erreur est survenue", err))
这是我的数组
[
{
"image_name": "Image1",
"image_id": "1",
"source": "images/img1.png"
},
{
"image_name": "Image2",
"image_id": "2",
"source": "images/img2.png"
},
{
"image_name": "Image3",
"image_id": "3",
"source": "images/img3.png"
},
{
"image_name": "Image4",
"image_id": "4",
"source": "images/img4.png"
},
{
"image_name": "Image5",
"image_id": "5",
"source": "images/img5.png"
},
{
"image_name": "Image6",
"image_id": "6",
"source": "images/img6.png"
},
{
"image_name": "Image7",
"image_id": "7",
"source": "images/img7.png"
},
{
"image_name": "Image8",
"image_id": "8",
"source": "images/img8.png"
}
]
您知道错误是什么吗? 谢谢。
querySelectorAll
returns 一个类似数组的列表。您可能需要迭代该列表以及您的图像列表
.then(response => response.json())
.then(data => {
let img = document.querySelectorAll('.image')
for (var i =0;i<data.length;i++) {
img[i].setAttribute('src', item[i].source)
}
}).catch(err => console.error("Une erreur est survenue", err))
试试这个
const images = document.querySelectorAll('.image'); // a collection
....
.then(response => response.json())
.then(data => data.forEach(({source,image_name},i) => {
images[i].src = source;
images[i].alt = image_name;
})
).catch(err => console.error("Une erreur est survenue", err))
https://jsfiddle.net/mplungjan/sehx2bc4/
如果图像的 ID 与 image_id 相匹配,您可以使用它来代替集合和 [i]
.then(response => response.json())
.then(data => data.forEach(({source,image_name, image_id}) => {
const image = document.getElementById(image_id);
image.src = source;
image.alt = image_name;
})
).catch(err => console.error("Une erreur est survenue", err))