为了账号安全,请及时绑定邮箱和手机立即绑定

在进度条上停止循环

在进度条上停止循环

慕田峪4524236 2023-09-28 17:08:31
我正在使用这个进度条: https ://codepen.io/thegamehasnoname/pen/JewZrm我遇到的问题是它循环,我想要实现的是:停止在最后一张进度幻灯片上(停止循环)。如果用户在进度条停止后位于最后一张幻灯片上,并且我单击按钮,则它应该从上一张幻灯片开始,而不是进度条的第一张幻灯片。.button-prev这是代码:// swiper custom progressbarconst progressContainer = document.querySelector('.progress-container');const progress = Array.from(document.querySelectorAll('.progress'));const status = document.querySelector('.status');const playNext = (e) => {  const current = e && e.target;  let next;  if (current) {    const currentIndex = progress.indexOf(current);    if (currentIndex < progress.length) {      next = progress[currentIndex+1];    }    current.classList.remove('active');    current.classList.add('passed');  }  if (!next) {    progress.map((el) => {      el.classList.remove('active');      el.classList.remove('passed');    })    next = progress[0];  }  next.classList.add('active');}progress.map(el => el.addEventListener("animationend", playNext, false));playNext();我尝试添加这个:if (current) {   if (!next) {     $('.progress-container div').addClass('passed');   }}但是该类passed被删除并且进度条再次开始。这是我的js previous button:$(document).on('click', ".button-prev", function() {  $('.progress-container div.active').prev().removeClass('passed').addClass('active');  $('.progress-container div.active').next().removeClass('active');});关于如何实现这一目标有什么想法吗?
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

你几乎已经解决了!只需添加一个 return 语句即可避免将活动调用设置为第一个进度元素。


if (current) {

    const currentIndex = progress.indexOf(current);

    if (currentIndex < progress.length) {

      next = progress[currentIndex+1];

    }

    current.classList.remove('active');

    current.classList.add('passed');

    

    if (!next) {

     $('.progress-container div').addClass('passed');

      return;

   }

  } 


查看完整回答
反对 回复 2023-09-28
  • 1 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信