Javascript 基于基于对象的单击事件向进度栏添加和删除活动类';s属性

Javascript 基于基于对象的单击事件向进度栏添加和删除活动类';s属性,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我研究这个问题已经有一段时间了。我需要一些重要的指导。我有一个进度条,它是一个由无序列表组成的,列表项在里面,它们组成了分隔符和圆圈,如下图所示。它们是基于对象中的StepSize属性构建的,我在对象中循环并为这些列表项分配类 <li class="circle"></li> <li class="divider halfA"></li> <li class="divider halfB"></li> <li clas

我研究这个问题已经有一段时间了。我需要一些重要的指导。我有一个进度条,它是一个由无序列表组成的,列表项在里面,它们组成了分隔符和圆圈,如下图所示。它们是基于对象中的
StepSize
属性构建的,我在对象中循环并为这些列表项分配类

<li class="circle"></li>
<li class="divider halfA"></li>
<li class="divider halfB"></li>
<li class="circle"></li>
<li class="divider full"></li>...
li{
列表样式类型:无;
}
.圆圈{
宽度:25px;
高度:25px;
背景#8080;
显示:块;
边界半径:50%;
浮动:左;
}
.circle.active{
背景:#000000;
}
.分隔器{
边缘顶部:10px;
}
.一半{
宽度:50px;
高度:5px;
背景#8080;
显示:块;
浮动:左;
}
半开{
背景:#000;
}
.满{
宽度:100px;
高度:5px;
背景#8080;
显示:块;
浮动:左;
}
.分配器.满的.激活的{
背景:#000;
}
.菜单{
宽度:100%;
显示:块;
浮动:左;
}

您的代码确实需要一些主要的指导,即使您有很好的想法,并且清楚地掌握了一些基本的编程概念。然而,您的代码缺少的是抽象

所谓抽象,我指的是很多东西。例如:

  • halfA
    halfB
    Z的第三方
    :感觉“有点疯狂”通常是你的方法太宽或太窄的标志。优先考虑与明确规模相关的抽象数字,而不是猴子补丁系统。创建一个由部分步骤组成的数组,将这些步骤放在一起构成整个步骤(用一个项目符号标记)。您的示例可以这样表示:
    var步骤=[0.5,0.5,1,0.5,0.5,1,0.5,0.5,0.5,0.5,0.5,1]。这样,您将非常清楚“索引”代表什么。例如,“上面列表中的索引
    3
    是总共
    7个
    步骤中的步骤
    2.5
    ,因此我们有两个项目符号处于活动状态,进度条距离第三个项目符号只有一半”。将三分之一或四分之一的步骤添加到此系统将是轻而易举的事:只需在该列表中添加一些
    1/3
    0.25
    元素即可
  • 尽可能少的HTML元素数量:HTML/CSS/JS很快就会变得杂乱无章,因此,让我们通过删除尽可能多的元素来构建进度条,以减少混乱。在你的情况下,单元素的子弹是不可避免的,但你可以替换每一个
    抱歉,我原来的digram缺少一个halfA和halfB部分,现在添加了。你解决了吗??更改
    var count=3
    似乎解决了这个问题,我仍然对您的代码感到困惑,并花了一些时间来理解它,但是在调试之后,我发现将值更改为3可以解决UI问题。我仍然认为您需要检查适用于当前步长组合的逻辑变量值,但是,如果我开始以完全开始的方式进入进度条,则会将其打断。我的目标是让它在所有可能的步长组合中工作。我理解,但是你的代码对我来说很难理解,也很难找出问题所在,它在for循环中的
    updateProgressBar
    函数中,您有一个
    if
    else if
    ,但是没有
    else
    我认为您需要检查这部分好的讨论。我可能也会将OP导向画布实现,因为它似乎更适合手头的任务。哇!我不知道该怎么感谢你。抽象听起来很有趣,是的,我同意我已经理解了某些概念,但是还有很多学习的空间。我将坐下来,花更多的时间理解代码中的所有内容,但这非常棒,非常感谢。