我对这个概念有点麻烦。我正在尝试编写一个相对简单的脚本,它将按指定的数量增加/减少一组整数。
此代码在逻辑上起作用但不是所希望的。
HTML:
<table class="ebc-table">
<tr>
<td class="priceChange">4.00</td>
<td class="priceChange">16.00</td>
<td class="priceChange">31.00</td>
<td class="priceChange">51.00</td>
</tr></table>
jQuery的:
$(".applybutton").click(function(){
var adjFactor = $("#adj_factor :selected").val();
var adjAmount = $("#adj_amount").val();
if( adjFactor == "$" )
{
$(".priceChange").each(function() {
var test = $(this).html();
var updateAmt = parseFloat(test) + parseFloat(adjAmount);
//if( isNaN( parseFloat( updateAmt) ) ) // do something here eventually
return $(this).html(updateAmt);
});
}
});
每当输入调整金额并且用户单击“应用”按钮时,所有值都会相应更改。正如您在上面的代码中所看到的,每次计算总和时它都使用TD中存在的整数,而不是原始的起始数...当然,$(this).html()每次都会更改sum计算并写入html。换句话说,总和只是叠加在一起。
我怎么能写这个来保留原始号码,从原始号码中加/减,不是从累计号码中减去/来自
我意识到我的解释可能令人困惑。如果需要,我会发布一个jsfiddle。
答案 0 :(得分:3)
您可以使用data-* attributes和jQuery .data()来获取它。看到这个。
HTML:
<table class="ebc-table">
<tr>
<td class="priceChange" data-origprice="4.00">4.00</td>
...
</tr>
</table>
JS / jQuery的:
$(".applybutton").click(function () {
var adjFactor = $("#adj_factor :selected").val();
var adjAmount = $("#adj_amount").val();
if (adjFactor == "$") {
$(".priceChange").each(function () {
var test = $(this).data('origprice'); //gets data-origPrice attribute
var updateAmt = parseFloat(test) + parseFloat(adjAmount);
//if( isNaN( parseFloat( updateAmt) ) ) // do something here eventually
return $(this).html(updateAmt);
});
}
});
Browser support也非常好!
答案 1 :(得分:0)
一种策略是将原始值保存在数组中。
var originals = []
$(".applybutton").click(function(){
var adjFactor = $("#adj_factor :selected").val();
var adjAmount = $("#adj_amount").val();
if( adjFactor == "$" )
{
if (originals.length === 0) {
$(".priceChange").each(function(i) {
originals[i] = parseFloat($(this).html());
}
}
$(".priceChange").each(function(i) {
return function() {
var test = $(this).html();
var updateAmt = originals[i] + parseFloat(adjAmount);
//if( isNaN( parseFloat( updateAmt) ) ) // do something here eventually
else{return $(this).html(updateAmt); }
});
}
}
});
答案 2 :(得分:0)
您可以在页面加载时将原始数字存储在变量中,并在递增时使用该值。
这是一个基本的例子:
$(document).ready(function(){
var origNumber = parseInt($('#num').text(), 10);
$('button').click(function() {
var incr = parseInt($('#incr :selected').val(), 10);
alert(origNumber + incr);
});
});
如果您需要存储多个值,请使用数组。