【发布时间】:2021-10-01 02:28:30
【问题描述】:
这是我在社区的第一个问题
大家好! 现在我正在练习 JS 课程。 在下面的代码中,我想用编程语言课程制作产品卡片,我创建了包含必须添加到 html 正文的数据的数组,请参阅渲染类
const div = document.getElementById('app')
class Arguments {
constructor(title, img, depiction, price) {
this.title = title
this.img = img
this.depiction = depiction
this.price = price
}
}
class Render {
cards = [
new Arguments('Python BootCamp', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR7qKCjl9JJDnFDvf-U4Sv_YR5iXWGZbu-QRXNDZ5peS_Nusg8Sh8fb5lk5IbH9_MqSIIE&usqp=CAU', 'In this Complete Python course, you will learn everything you need to know about Python programming. You will start from very basics towards to the advance', 0.00,),
new Arguments('JavaScript Crash Course', 'https://i.ytimg.com/vi/nN_qBdgmQpw/maxresdefault.jpg', 'A crach course by professional JS-DEVELOPER who"s wage $10000+', 300.00),new Arguments('JAVA COURSE', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSvZ2DvlygW--TMKhrSO4SfA-6Op1QmVUXmh2dqtGxbHxPyvYH9elzpu-xGy2FOPac9VcE&usqp=CAU', 'A profi"s java totrial ', 70.00,),
]
render() {
const ul = document.createElement('ul')
const li = document.createElement('li')
for (const elm of this.cards) {
li.classList.add = 'card'
li.innerHTML = `<h1>${elm.title}</h1><img src='${elm.img}'><p>${elm.depiction}</p><h3>${elm.price}</h3>`
ul.append(li)
}
div.append(ul)
}
}
const Project = new ProductsList_Render
Project.render()
我遇到了一个问题! 它只添加了数组的最后一个元素,但我们可以看到卡片的长度是 3。 我认为 for-of 循环只返回一个结果,但......
let array=[1,2]
for (const iterator of array) {
console.log(iterator);
}
如何解决。
【问题讨论】:
-
PS:
cards数组与Render类无关。把它移开,在那个班级外面。而是作为参数传递给构造函数。 -
将
const li = document.createElement('li')放入循环中 -
你的类型不应该依赖于全局状态。将
div从全局变量更改为render()的参数。 -
将
const li = document.createElement('li')移动到循环内。现在你每次循环迭代时都会覆盖它。 -
Duplicate of JavaScript: for loop append element in several places。该问题与类或数组无关。 @Goran.it 不,没有任何内容被覆盖;多次附加相同的元素。附加一个已经附加的元素将首先删除该元素;一个元素不能同时存在于两个地方。
标签: javascript arrays class iteration