Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我能';无法写入对象中的所有项目_Javascript_For Loop - Fatal编程技术网

Javascript 我能';无法写入对象中的所有项目

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列表。每个div将从对象中获取数据目标属性。我可以返回对象中的所有项,但只能获取最后一项

<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
替换给定属性中的值,而不是追加