【发布时间】:2021-08-31 11:54:59
【问题描述】:
我有一个循环遍历这个数组对象的 for 循环。但是,有一些事情我不确定并且不明白。第一个问题是为什么循环只显示数组中的一项而不是全部?另一个问题是它只显示数组中的最后一项?我以为它会显示第一项,但事实并非如此。感谢您对这些问题的任何解释,谢谢!
Javascript:
const rosterItems = [
{
img: '<img src="images/bryce.jpg" class="artist-image" alt="#">',
resident: '<p>Resident: Bryce Methven</p>',
bio: '<p>' +
'Lorem ipsum dolor sit amet consectetur adipisicing elit. ' +
'Culpa ex expedita doloremque, sunt eveniet, laboriosam totam at, debitis earum fugit eligendi quae. ' +
'Perferendis ratione cum ipsum molestiae perspiciatis tempore aut?' +
'Lorem ipsum dolor sit amet consectetur adipisicing elit. ' +
'Culpa ex expedita doloremque, sunt eveniet, laboriosam totam at, debitis earum fugit eligendi quae. ' +
'Perferendis ratione cum ipsum molestiae perspiciatis tempore aut?' +
'</p>'
},
{
img: '<img src="images/haptic.jpg" class="artist-image" alt="#">',
resident: '<p>Resident: Haptic</p>',
bio: '<p>' +
'Haptic ipsum dolor sit amet consectetur adipisicing elit. ' +
'Culpa ex expedita doloremque, sunt eveniet, laboriosam totam at, debitis earum fugit eligendi quae. ' +
'Perferendis ratione cum ipsum molestiae perspiciatis tempore aut?' +
'</p>'
},
{
img: '<img src="images/haptic.jpg" class="artist-image" alt="#">',
resident: '<p>Resident: DJ Test</p>',
bio: '<p>' +
'Haptic ipsum dolor sit amet consectetur adipisicing elit. ' +
'Culpa ex expedita doloremque, sunt eveniet, laboriosam totam at, debitis earum fugit eligendi quae. ' +
'Perferendis ratione cum ipsum molestiae perspiciatis tempore aut?' +
'</p>'
}
]
const rosterArtist = document.querySelector(".artist")
const rosterBio = document.querySelector(".bio")
for (let i = 0; i < rosterItems.length; i++) {
let leftCol = `<div class="item">
${rosterItems[i].img}
${rosterItems[i].resident}
</div>`
let rightCol = rosterItems[i].bio
rosterArtist.innerHTML = leftCol
rosterBio.innerHTML = rightCol
}
HTML:
<div class="roster-gallery">
<div class="artist">
</div>
<div class="artist-bio">
<div class="bio">
</div>
<div class="pagination">
<button class="previous">Previous</button>
<button class="next">Next</button>
</div>
</div>
</div>
【问题讨论】:
-
你正在覆盖元素的内容而不是添加它们:
.innerHTML = ...->.innerHTML += ...(.insertAdjacentHTML()优于.innerHTML,你应该切换到那个) -
哦,我现在明白了,谢谢!为什么
.insertAdjacentHTML()优于.innerHTML?我会调查的。 -
.innerHTML覆盖元素的完整内容,因此迫使浏览器解析并重绘其中的所有内容。它还删除了可能具有事件侦听器的元素。然后,您以一堆无法访问的事件处理程序结束。.insertAdjacentHTML()(及其其他版本)仅解析您调用它们的内容。他们只添加新的东西,不会弄乱现有的东西。没有丢失的事件处理程序,浏览器只需要绘制新的东西,...
标签: javascript arrays for-loop object