我正在努力建立一个投票系统,到目前为止我所做的是:
$('#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;
我想在何时向上或向下按投票按钮以十进制格式增加或减少数字,但改变小数点的右侧位置。例如:
像这样的增量:(通过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
我尝试改变的是离开十进制的位置,但我想改正。
答案 0 :(得分:2)
Number()
将字符串转换为数字。 0.1
$('#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;
答案 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
;
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;
答案 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`