增加小数但正确的位置

时间:2018-01-07 17:03:09

标签: javascript jquery

我正在努力建立一个投票系统,到目前为止我所做的是:



$('#Up').click(function() {
  var rate = $('#Rate').text();
  var math = parseInt(rate) + 1;

  $('#Rate').text(math.toFixed(1));

});

$('#Down').click(function() {
  var rate = $('#Rate').text();
  var math = parseInt(rate) - 1;

  $('#Rate').text(math.toFixed(1));

});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="Up">Up Vote</button>
<div id="Rate">0</div>
<button id="Down">Down Vote</button>
&#13;
&#13;
&#13;

我想在何时向上或向下按投票按钮以十进制格式增加或减少数字,但改变小数点的右侧位置。例如:

像这样的增量:(通过upvote命令)

0.1 => 0.2 = > 0.3 => 0.4 => 0.5 => 0.6 => 0.7 => 0.8 => 0.9 => 1.0 => 1.1 => 1.2

我尝试改变的是离开十进制的位置,但我想改正。

4 个答案:

答案 0 :(得分:2)

  1. 使用Number()将字符串转换为数字。
  2. 0.1
  3. 递增/递减

    &#13;
    &#13;
    $('#Up').click(function() {
      var rate = $('#Rate').text();
      var math = Number(rate) + 0.1;
    
      $('#Rate').text(math.toFixed(1));
    
    });
    
    $('#Down').click(function() {
      var rate = $('#Rate').text();
      var math = Number(rate) - 0.1;
    
      $('#Rate').text(math.toFixed(1));
    
    });
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button id="Up">Up Vote</button>
    <div id="Rate">0</div>
    <button id="Down">Down Vote</button>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:2)

不是按整数调整值并使用parseInt(),而是使用小数进行调整,然后使用parseFloat()

此外,这里不需要两个功能,因为它们仅根据用于调整的量而不同。只需使用一个函数并将所需的增量/减量传递给它。每当你发现自己编写已编写的代码时,请停下来思考如何重构代码以避免这种情况。重复的代码会使代码库膨胀,不能很好地扩展,并且更难以调试。

最后,最好将变量设置为DOM对象(或者,对于JQuery,设置DOM对象集),而不是对象的特定属性(如.text()),因为如果你最后需要同一对象的不同属性,您必须重新查询DOM以获取对象引用。并且,通常的惯例是,当您引用一个JQuery对象时,用$作为前缀,以提醒您和其他人它不是DOM对象引用而是JQuery引用。

var $rate = $('#Rate');

var result = null; // This is the variable that will store the most recent value

$('#Up').on("click", function(){ adjust(.1) });
$('#Down').on("click", function(){ adjust(-.1) });

function adjust(val){
  result = (parseFloat($rate.text()) + val).toFixed(1);
  $rate.text(result);
  console.log(result);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="Up">Up Vote</button>
<div id="Rate">0</div>
<button id="Down">Down Vote</button>

答案 2 :(得分:1)

因此,只需尝试将其解析为Expression而不是float;

&#13;
&#13;
int
&#13;
$('#Up').click(function() {
  var rate = $('#Rate').text();
  var math = parseFloat(rate) + 0.1;

  $('#Rate').text(math.toFixed(1));

});

$('#Down').click(function() {
  var rate = $('#Rate').text();
  var math = parseFloat(rate) - 0.1;

  $('#Rate').text(math.toFixed(1));

});
&#13;
&#13;
&#13;

答案 3 :(得分:1)

另一种方法是将费率存储为数据属性。 JQuery LIKE会自动将数值转换为数字

ITEM_CH_%_01_A
DECLARE @ItemCode VARCHAR(MAX) = 'ITEM_CH_TBLADE_01_C_RARE'
DECLARE @ItemLink INT = (SELECT Link FROM _RefObjCommon WHERE CodeName128 = @ItemCode)
DECLARE @NewData INT = (SELECT Dur_U FROM _RefObjItem WHERE ID = @ItemLink)

UPDATE _RefScrapOfPackageItem SET Data = @NewData WHERE RefItemCodeName = @ItemCode`