javascript - 滑块中的第二项在执行时未显示在网页上
问题描述
我正在用 JavaScript 制作评论滑块。我面临的问题是,当我运行代码时,它没有显示数组中的第二项。任何人都可以看到代码并告诉我以下代码中的错误可能是什么?
**HTML**
<body>
<main>
<section class="container">
<!-- title -->
<div class="title">
<h2>our reviews</h2>
<div class="underline"></div>
</div>
<!-- review -->
<article class="review">
<div class="img-container">
<img src="person-1.jpeg" id="person-img" alt="" />
</div>
<h4 id="author">sara jones</h4>
<p id="job">ux designer</p>
<p id="info">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Iusto
asperiores debitis incidunt, eius earum ipsam cupiditate libero?
Iste, doloremque nihil?
</p>
<!-- prev next buttons-->
<div class="button-container">
<button class="prev-btn">
<i class="fas fa-chevron-left"></i>
</button>
<button class="next-btn">
<i class="fas fa-chevron-right"></i>
</button>
</div>
<!-- random button -->
<button class="random-btn">surprise me</button>
</article>
</section>
</main>
<!-- javascript -->
<script src="app.js"></script>
</body>
</html>
**javascript:**
const reviews = [
{
id: 1,
name: "susan smith",
job: "web developer",
img:
"https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883334/person-1_rfzshl.jpg",
text:
"I'm baby meggings twee health goth +1. Bicycle rights tumeric chartreuse before they sold out chambray pop-up. Shaman humblebrag pickled coloring book salvia hoodie, cold-pressed four dollar toast everyday carry",
},
{
id: 2,
name: "anna johnson",
job: "web designer",
img:
"https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883409/person-2_np9x5l.jpg",
text:
"Helvetica artisan kinfolk thundercats lumbersexual blue bottle. Disrupt glossier gastropub deep v vice franzen hell of brooklyn twee enamel pin fashion axe.photo booth jean shorts artisan narwhal.",
},
{
id: 3,
name: "peter jones",
job: "intern",
img:
"https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883417/person-3_ipa0mj.jpg",
text:
"Sriracha literally flexitarian irony, vape marfa unicorn. Glossier tattooed 8-bit, fixie waistcoat offal activated charcoal slow-carb marfa hell of pabst raclette post-ironic jianbing swag.",
},
{
id: 4,
name: "bill anderson",
job: "the boss",
img:
"https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883423/person-4_t9nxjt.jpg",
text:
"Edison bulb put a bird on it humblebrag, marfa pok pok heirloom fashion axe cray stumptown venmo actually seitan. VHS farm-to-table schlitz, edison bulb pop-up 3 wolf moon tote bag street art shabby chic. ",
},
];
//select items
const img = document.getElementById('person-img');
const author = document.getElementById('author');
const job = document.getElementById('job');
const info = document.getElementById('info');
//select buttons
const prevBtn = document.querySelector('.prev-btn');
const nextBtn = document.querySelector('.next-btn');
const randomBtn = document.querySelector('.random-btn');
//set starting item
let currentItem = 0;//as arrays start from zero
//load initial item
window.addEventListener("DOMContentLoaded", function () {
showPerson();
});
//show person based on current item
function showPerson(){
const item = reviews[currentItem];
img.src = item.img;
author.textContent = item.name;
job.textContent = item.job;
info.textContent = item.text;
//get the next button working
nextBtn.addEventListener('click', function(){
currentItem++;
if (currentItem > reviews.length - 1) {
currentItem = 0;
}
showPerson();
});
}
解决方案
我只是将 nextBtn.AddEventListener 移动到 DOMContentLoaded 并且它运行良好。
const reviews = [
{
id: 1,
name: "susan smith",
job: "web developer",
img: "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883334/person-1_rfzshl.jpg",
text: "I'm baby meggings twee health goth +1. Bicycle rights tumeric chartreuse before they sold out chambray pop-up. Shaman humblebrag pickled coloring book salvia hoodie, cold-pressed four dollar toast everyday carry",
},
{
id: 2,
name: "anna johnson",
job: "web designer",
img: "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883409/person-2_np9x5l.jpg",
text: "Helvetica artisan kinfolk thundercats lumbersexual blue bottle. Disrupt glossier gastropub deep v vice franzen hell of brooklyn twee enamel pin fashion axe.photo booth jean shorts artisan narwhal.",
},
{
id: 3,
name: "peter jones",
job: "intern",
img: "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883417/person-3_ipa0mj.jpg",
text: "Sriracha literally flexitarian irony, vape marfa unicorn. Glossier tattooed 8-bit, fixie waistcoat offal activated charcoal slow-carb marfa hell of pabst raclette post-ironic jianbing swag.",
},
{
id: 4,
name: "bill anderson",
job: "the boss",
img: "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883423/person-4_t9nxjt.jpg",
text: "Edison bulb put a bird on it humblebrag, marfa pok pok heirloom fashion axe cray stumptown venmo actually seitan. VHS farm-to-table schlitz, edison bulb pop-up 3 wolf moon tote bag street art shabby chic. ",
},
];
//select items
const img = document.getElementById('person-img');
const author = document.getElementById('author');
const job = document.getElementById('job');
const info = document.getElementById('info');
//select buttons
const prevBtn = document.querySelector('.prev-btn');
const nextBtn = document.querySelector('.next-btn');
const randomBtn = document.querySelector('.random-btn');
//set starting item
let currentItem = 0; //as arrays start from zero
//load initial item
window.addEventListener("DOMContentLoaded", function() {
showPerson();
//get the next button working
nextBtn.addEventListener('click', function() {
currentItem++;
if (currentItem > reviews.length - 1) {
currentItem = 0;
}
showPerson();
});
});
//show person based on current item
function showPerson() {
const item = reviews[currentItem];
img.src = item.img;
author.textContent = item.name;
job.textContent = item.job;
info.textContent = item.text;
}
<body>
<main>
<section class="container">
<!-- title -->
<div class="title">
<h2>our reviews</h2>
<div class="underline"></div>
</div>
<!-- review -->
<article class="review">
<div class="img-container">
<img src="person-1.jpeg" id="person-img" alt="" width="100px" />
</div>
<h4 id="author">sara jones</h4>
<p id="job">ux designer</p>
<p id="info">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Iusto asperiores debitis incidunt, eius earum ipsam cupiditate libero? Iste, doloremque nihil?
</p>
<!-- prev next buttons-->
<div class="button-container">
<button class="prev-btn">
<i class="fas fa-chevron-left"></i>
</button>
<button class="next-btn">
<i class="fas fa-chevron-right"></i>
</button>
</div>
<!-- random button -->
<button class="random-btn">surprise me</button>
</article>
</section>
</main>
<!-- javascript -->
<script src="app.js"></script>
</body>
</html>
推荐阅读
- numpy - 如何在 numpy 中修改/更新数组而不更改原始数组
- r - 箱线图和点图可以来自ggplot中的两个不同数据吗?
- pandas - 如何过滤包含字符串和浮点数混合的熊猫数据框?
- python - Python matplotlib,在轴上添加单个自定义刻度线
- excel - Excel VBA - 从第一行复制值并粘贴到列中
- shell - 如何使用该行中的模式在行尾添加分号
- python - 从 FTP 共享下载多个文件?
- swift - 有什么方法可以在 Swift 中使用 FQL?
- css - 如何让自动连字符在 Edge 88 中工作?
- python - Opencv GUI python:排列创建的按钮