Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于先前分数实现投票逻辑_Javascript_Jquery - Fatal编程技术网

Javascript 基于先前分数实现投票逻辑

Javascript 基于先前分数实现投票逻辑,javascript,jquery,Javascript,Jquery,不知道怎么处理。我以前做过,但它涉及很多if/else语句,如果不借助于它,我似乎无法理解它。我把它发布在codereview上,并请人帮我重新制作,但现在我正在努力让这个功能正常工作 现在的工作原理是,如果你点击“向上”,它将增加1分。如果您再次单击“向上”,则会降低分数。那很好。如果您单击“向下”,它将具有相同的行为。但是,它永远不会低于0,因为我不想显示负分数 现在我只是想看看上一个或下一个按钮上是否有.upColor和.downColorcss类,这些类会检查他们是否已经投票。我很难根据

不知道怎么处理。我以前做过,但它涉及很多if/else语句,如果不借助于它,我似乎无法理解它。我把它发布在codereview上,并请人帮我重新制作,但现在我正在努力让这个功能正常工作

现在的工作原理是,如果你点击“向上”,它将增加1分。如果您再次单击“向上”,则会降低分数。那很好。如果您单击“向下”,它将具有相同的行为。但是,它永远不会低于0,因为我不想显示负分数

现在我只是想看看上一个或下一个按钮上是否有
.upColor
.downColor
css类,这些类会检查他们是否已经投票。我很难根据这个更新正确的分数,特别是如果原始分数是0,或者分数是10

我试图实现的逻辑:

例如,原始分数为0:

  • 用户投票支持。比分为1。用户投票反对。分数变为0(不是-1)
  • 用户投票反对。分数保持在0。用户投票支持。比分为1
例如,原始分数为10分:

  • 用户投票支持。比分是11分。用户投票反对。比分是9分
  • 用户投票反对。比分是9分。用户投票支持。比分是11分
代码:


演示:

我不会重写您的代码,因为这将花费我太长的时间,但我会给您一些从一开始就应该使用的代码

从原始编号开始:

var original_vote = 2;
var current_vote = original_vote;
将此作为一个常量,以供将来参考。然后,当您单击向上投票时,只需使用以下方法即可将1添加到该投票中:

current_vote = original_vote + 1;
那么,取消对投票结果的检查将使其:

current_vote = original_vote;
那就做相反的事来否决投票吧

保留原始数字可确保您不会意外地使投票超出应有的范围


希望这有帮助

我似乎找不到你的确切问题,你能告诉我们你到底想要什么吗?从我收集到的你的目标问题来看,这似乎对我有用。首先,我单击
up
,它将添加1()。然后我单击
向下
,它将只减少1(),但应该减少2。然后,如果我再次单击
down
,它将变为1,但它应返回到原始分数(),您的逻辑阻止更改多个,并重置为原始分数。您也从未修改存储的原始文件。我添加了一个答案,可以解决您的问题
current_vote = original_vote;