Javascript 我能';无法写入对象中的所有项目
我有一个弹出的div列表。每个div将从对象中获取数据目标属性。我可以返回对象中的所有项,但只能获取最后一项Javascript 我能';无法写入对象中的所有项目,javascript,for-loop,Javascript,For Loop,我有一个弹出的div列表。每个div将从对象中获取数据目标属性。我可以返回对象中的所有项,但只能获取最后一项 <div class="portfolio-item" data-toggle="modal"></div> <div class="portfolio-item" data-toggle="modal"></div> const portolioItemInfos = [ { dataTarget: "tempero-resta
<div class="portfolio-item" data-toggle="modal"></div>
<div class="portfolio-item" data-toggle="modal"></div>
const portolioItemInfos = [
{ dataTarget: "tempero-restaurante" },
{ dataTarget: "aksam-gunesi" }
]
const div = document.querySelectorAll(".portfolio-item");
for (let key of div) {
for (let item of portolioItemInfos) {
key.setAttribute("data-target", item.dataTarget);
}
}
const portolioItemInfos=[
{dataTarget:“坦佩罗餐厅”},
{dataTarget:“阿克萨姆·古内西”}
]
const div=document.queryselectoral(“.portfolio item”);
for(让div的键){
对于(portolioItemInfos的let项){
key.setAttribute(“数据目标”,item.dataTarget);
}
}
您的问题是您正在覆盖每个循环的数据目标属性。相反,您需要通过获取当前值并将新值添加到数据目标
属性的末尾,从而附加到该属性的末尾。您可以这样做:
let prev = key.getAttribute('data-target');
prev = prev ? prev : '';
key.setAttribute("data-target", (prev +' ' +item.dataTarget).trim());
参见下面的示例(检查元件以查看结果):
const portolioItemInfos=[{
数据目标:“坦佩罗餐厅”
},
{
数据目标:“阿克萨姆·古内西”
}
]
const divs=document.queryselectoral(“.portfolio item”);
for(让divs的键){
对于(portolioItemInfos的let项){
让prev=key.getAttribute('data-target');
prev=prev?prev:“”;//如果prev不为null,则将prev设置为等于prev。如果prev为null,则将prev设置为空字符串
setAttribute(“数据目标”,(prev+''+item.dataTarget.trim());
}
}
对于每个div
循环所有portolioItemInfos
,因此每个div
取循环的最后一个值
实际上,您可以简化它,不需要在portolioItemInfos
上循环,只需使用for
循环的索引来分配正确的数据目标
const portolioItemInfos=[
{
dataTarget:“坦佩罗餐厅”
},
{
数据目标:“aksam gunesi”
}
];
const div=document.querySelectorAll(“.portfolio item”);
for(设i=0;i
您可以使用forEach
方法,而不是传统的循环,如下所示:
const portolioItemInfos=[
{dataTarget:“坦佩罗餐厅”},
{dataTarget:“阿克萨姆·古内西”}
]
const div=document.queryselectoral(“.portfolio item”);
portolioItemInfos.forEach(函数(项、索引){
div[index].setAttribute(“数据目标”,portolioItemInfos[index].dataTarget);
})
key.setAttribute
替换给定属性中的值,而不是追加