我想使用以下(创建一个画廊卡片,信息是通过数组提供的初始和一个表单添加额外),我已经能够得到以下函数工作的信息,通过表单添加,但没有能够得到函数工作的数组我有。
function galleryAddItems(image, title){
const galleryElement = galleryTemplate.cloneNode(true);
galleryElement.querySelector(".gallery__image").src = image;
galleryElement.querySelector(".gallery__text").textContent = title;
galleryContainer.prepend(galleryElement);
}
在我的阵列上
const initialCards = [
{
name: "The End Place",
link: "images/cliffside__Katie-Rodriguez.jpg"
},
{
name: "Turn That Leaf Over",
link: "images/leaf__chuttersnap.jpg"
},
...
];
当前有第二个函数设置为
initialCards.forEach(function(thingy){
const galleryElement = galleryTemplate.cloneNode(true);
galleryElement.querySelector(".gallery__image").src = thingy.link;
galleryElement.querySelector(".gallery__text").textContent = thingy.name;
galleryContainer.append(galleryElement);
});
并希望避免重复代码以使其工作。
我以前已经让galleryAddItems在函数中包含了。value,因为它在不同的地方是需要的,但是在调用它的时候,希望它能在这里工作。 我试过了
initialcards.foreach(galleryAddItems(link,name))
,并尝试了initialcards.link/。name initialcardslink/initialcardsname等方法。如果我不输入参数,我将无法获得图像URL,索引将放置在我希望获得名称/标题的位置。
您需要将一个函数传递给foreach
函数,当前传递的是GalleryAddItems
的返回值,因为您正在调用它。
我建议重构代码,使GalleryAddItems
将一张卡作为参数,然后使用foreach
为每张卡调用它。
function galleryAddItems(card){
const galleryElement = galleryTemplate.cloneNode(true);
galleryElement.querySelector(".gallery__image").src = card.link;
galleryElement.querySelector(".gallery__text").textContent = card.name;
galleryContainer.prepend(galleryElement);
}
// Call galleryAddItems for each card
initialCards.forEach(galleryAddItems)
无需更改GalleryAddItems()
函数的简单方法是:
initialCards.forEach(thingy => galleryAddItems(thingy.link, thingy.name));
就我个人而言,我可能会考虑将第一个函数改为:
function galleryAddItems(image) {
const galleryElement = galleryTemplate.cloneNode(true);
galleryElement.querySelector(".gallery__image").src = image.link;
galleryElement.querySelector(".gallery__text").textContent = image.name;
galleryContainer.prepend(galleryElement);
}
因此您可以简单地执行以下操作:
initialCards.forEach(galleryAddItems);