javascript - 我无法写入 DIV 对象中的所有项目
问题描述
我有一个带有弹出窗口的 div 列表。每个 div 都会从一个对象中获取 data-target 属性。我可以返回对象中的所有项目,但只得到最后一个项目。
<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);
}
}
解决方案
您的问题是您正在覆盖data-target
每个循环的属性。data-target
相反,您需要通过获取当前值并将新值添加到它的末尾来附加到属性的末尾。你可以这样做:
let prev = key.getAttribute('data-target');
prev = prev ? prev : '';
key.setAttribute("data-target", (prev +' ' +item.dataTarget).trim());
请参见下面的示例(检查元素以查看结果):
const portolioItemInfos = [{
dataTarget: "tempero-restaurante"
},
{
dataTarget: "aksam-gunesi"
}
]
const divs = document.querySelectorAll(".portfolio-item");
for (let key of divs) {
for (let item of portolioItemInfos) {
let prev = key.getAttribute('data-target');
prev = prev ? prev : ''; // if prev is isn't null, set prev equal to prev. If prev is null, then set prev to the empty string
key.setAttribute("data-target", (prev +' ' +item.dataTarget).trim());
}
}
<div class="portfolio-item" data-toggle="modal"></div>
<div class="portfolio-item" data-toggle="modal"></div>
推荐阅读
- assembly - EMU8086计算后如何打印一个数字
- c# - 在 Microsoft Graph 中获取 ListItem 的多个查找字段
- swiftui - 如何使拖放视图修改器接受任何对象
- c++ - 使用 Boost 框架实现通过 TCP 协议进行通信的客户端和服务器模型
- php - Laravel Spatie Query Builder - 加入时查询错误
- java - 在 Java 6 和 GlassFish 服务器中实现 Artemis 2.17.0 的消息发送器
- ios - 从 SwiftUI 视图中获取框架/尺寸
- react-native - 如果我不使用 forwardRef 将 ref 传递给 RN 组件会发生什么?
- css - 使用“&”(与号)运算符,其中最顶层的父元素是元素标签选择器
- flutter - 在 null 上调用了方法“加载”。尝试显示带有颤振的横幅添加时出错