javascript - 如何从对象中获取名称并将其分配给新创建的元素?
问题描述
我的问题是:
- 如何使用对象中的每个名称值创建一个新 p?
- img,评论等也是如此。
我很挣扎,因为我得到了所有的名字,但我不知道如何为每个索引分别创建新段落(appendData 函数)和另一个函数它只是坏的和重复的代码(generateImg 函数)
const data = {
"arr": [{
"name": "Box",
"reviews": 65,
"img": 1
}, {
"name": "Drawer",
"reviews": 70,
"img": 2
}, {
"name": "Desk",
"reviews": 20,
"img": 3
}, {
"name": "Chair",
"reviews": 76,
"img": 4
}, {
"name": "Sofa",
"reviews": 90,
"img": 5
}]
}
function appendData(data) {
for (var i = 0; i < data.arr.length; i++) {
var p = document.createElement("p");
var obj = data.arr[i];
p.textContent = obj.name;
var elem = document.getElementById('new');
elem.appendChild(p);
}
}
function generateImg(data) {
for (i = 0; i < data.arr.length; i++) {
let productImage1 = document.getElementById('productImage1').src = "./img/" + data.arr[0].img + ".jpg";
let productImage2 = document.getElementById('productImage2').src = "./img/" + data.arr[1].img + ".jpg";
let productImage3 = document.getElementById('productImage3').src = "./img/" + data.arr[2].img + ".jpg";
let productImage4 = document.getElementById('productImage4').src = "./img/" + data.arr[3].img + ".jpg";
let productImage5 = document.getElementById('productImage5').src = "./img/" + data.arr[4].img + ".jpg";
}
}
<div class="row">
<div class="media">
<img id="productImage1" src="" alt="Box">
</div>
</div>
<div class="row">
<div class="product-title"></div>
</div>
<div class="row">
<div class="reviews"></div>
</div>
<div class="row">
<div class="media">
<img id="productImage2" src="" alt="Drawer">
</div>
</div>
<div class="row">
<div class="product-title"></div>
</div>
<div class="row">
<div class="reviews"></div>
</div>
解决方案
你的意思是这样吗?当你为每件事都有一个 div 时,不需要 P
const data = {
"arr": [
{ "name": "Box", "reviews": 65, "img": 1 },
{ "name": "Drawer", "reviews": 70, "img": 2 },
{ "name": "Desk", "reviews": 20, "img": 3 },
{ "name": "Chair", "reviews": 76, "img": 4 },
{ "name": "Sofa", "reviews": 90, "img": 5 }
]
}
const html = data.arr.map(item => `<div class="row">
<div class="media"><img src=".img/${item.img}.jpg" /></div>
</div>
<div class="row">
<div class="product-title">${item.name}</div>
</div>
<div class="row">
<div class="reviews">${item.reviews}</div>
</div>`)
document.getElementById("container").innerHTML = html.join("")
<div id="container"></div>
推荐阅读
- python - 如何解决“virtualenv:错误:需要以下参数:dest”错误?
- c# - 我无法使用 HtmlAgilityPack 从网络获取数据,引发 NullReferenceExeption 错误
- wordpress - URL重写:从一个页面重定向到另一个页面
- arrays - 在 SwiftUI 中显示来自嵌套多维 ForEach 的文本
- python - 是否有在字符串列表中搜索数字而不循环 2 次的功能?
- linq - 按属性和嵌套元素的 LINQ XML 查询
- python - 添加带有条件的新列
- python - OpenCV 立体校准错误 - (-3:Internal error) CALIB_CHECK_COND - 函数“CalibrateExtrinsics”中输入数组 1 的病态矩阵
- jasper-reports - 如何根据 JasperReports Server 中的另一个多选值列表(复选框)制作多选值列表(复选框)?
- php - 从 Symfony 5 OutputInterface 获取整个控制台输出