JavaScript、增量和加/减数字一起单击

JavaScript、增量和加/减数字一起单击,javascript,math,Javascript,Math,我想解决一个JS问题。功能应该是这样的 单击值1,显示值。 单击值2,将当前值添加到值1。值1=9+值2=8,总共17个。 单击值3,添加值1和2…依此类推,直到选择所有5个数字 但是,我希望能够取消选择数字切换并减少总数 这是我目前的代码 $.start-count-1.onclick,functionevt{ 变量$el=$。增量编号, 数值=9; 预防违约; ${ 百分比:0 }.stoptrue.animate{ 百分比:价值 }, { 持续时间:500, 步骤:功能{ //小数点后1

我想解决一个JS问题。功能应该是这样的

单击值1,显示值。 单击值2,将当前值添加到值1。值1=9+值2=8,总共17个。 单击值3,添加值1和2…依此类推,直到选择所有5个数字

但是,我希望能够取消选择数字切换并减少总数

这是我目前的代码

$.start-count-1.onclick,functionevt{ 变量$el=$。增量编号, 数值=9; 预防违约; ${ 百分比:0 }.stoptrue.animate{ 百分比:价值 }, { 持续时间:500, 步骤:功能{ //小数点后1位的百分比; var percentageVal=Math.roundthis.percentage*10/10; $el.textpercentageVal+'%'; } }.允诺{ //将动画完成后的值硬设置为 //确保该值是正确的 $el.textvalue+%; }; }; JS-Bin 0%应增加9+8+4,并在再次单击按钮时减少。 0%

9%

8%

4%

9 + 8 + 4 + 再次单击时减去数字。。。 几点:

选择器.start-count-1仅用于类start-count-1,因此忽略其他按钮。 您已将函数中的值9固定为value=9;因此,即使您有正确的选择器,增量也总是发生在9上。 当您单击8+等按钮时,函数无法知道数字8、9或4。 您可以尝试使用选择器[class*=start count-]选择包含start count的类中的all,然后为每个按钮设置相应的值,如

九,+

然后,您还可以使用以下方法修改函数以获取单击按钮的值:

value = $(this).val();
最后,您可以比较这个值是否等于当前递增的值,或者是递增,或者是递减。比如:

if($el.val()==value){
  // here i just set the text to 0%, you could implement a decrement here, or use some other mechanism to if-else the entire logic
  $el.text(0 + "%"); 
return;}
这方面的粗略实现可在以下位置找到:

这只是为了涵盖答案开头所述的要点。任何修改、美化和逻辑改进都是由您来实现的,当然,如果您再次怀疑,您可以询问

--编辑-- 要添加添加/减去的切换功能,单击按钮可以添加一个附加的数据属性来存储,并检查是否为“添加”


示例codedepen

您好,您能在这里提供一个,可能是JSFIDLE、codepen,或者只是一个片段吗?是的,请稍等。我用jsbin更新了它,因为JSFIDLE没有加载……您只解决了onclick for.start-count-1。其他按钮是.start-count-2和.start-count-3。也许可以将所有按钮放在一个类中.start-count,然后将数据值1、2或3传递给onclick函数。我将尝试一下,我现在正在处理它。我能看到的唯一没有在这里实现的事情就是把这些数字加在一起。只要这些数字加在一起,第二次单击时设置为0就可以了。9和8的一次点击总数应为17。我会检查一下,看看我能不能弄明白。这个想法是为了指引你正确的方向,而不是为你做家庭作业。。。幸运的是我知道这一点。感谢您的帮助。作为提示,您可以使用$this.attr&39;将start count元素的另一个属性设置为true或false,而不是检查el的值;加上&39;,符合事实的每次单击它们并使用该值$this.attr'add'根据真或假进行加或减。