我正在我的站点中处理自定义计划
的功能。
随着事件任务的值的增加或减少,有一些任务可以习惯性地添加或删除..
事件任务中有四个值:1 2 3 4
1 将总值乘以 1
2 会将总值乘以 1.5
3 将总值(value)乘以 1.4
4 将总值(value)乘以 1.3
这个值可以递增和递减..
当事件任务的值为 1 并且我添加它正常工作的计划时(因为删除所有计划总值变为 0) 其他事件任务也是如此。
问题陈述:
但是当 active 为 1 并且我添加前两个计划,然后将事件任务增加 2,然后添加第三个计划时它工作正常......但是通过在最后删除所有这 3 个计划它给我 -1 值.. .我认为是因为该值无法正确舍入..
我还尝试了 math.ceil() 和 math.floor() 函数,但没有成功。
如有任何帮助,我们将不胜感激。提前谢谢你。
这是我的代码:
var $j = jQuery.noConflict();
(function($j) {
var otherincome = $j(".totalamountremaining");
$j('.addno').on('click',function(){
var $jqty=$j(this).closest('span').find('.qty');
var currentVal = parseInt($jqty.val());
if (!isNaN(currentVal) && currentVal < 4) {
$jqty.val(currentVal + 1);
if (!isNaN(currentVal) && currentVal == 1){
var firstinc = Math.round(parseInt(otherincome.val()||0)*1.5);
$j('.totalamountremaining').val(firstinc);
$j('.totalamountremaining1').text(firstinc);
}
if (!isNaN(currentVal) && currentVal == 2){
var secondinc = Math.round(parseInt(otherincome.val()||0)*1.4);
$j('.totalamountremaining').val(secondinc);
$j('.totalamountremaining1').text(secondinc);
}
if (!isNaN(currentVal) && currentVal == 3){
var thirdinc = Math.round(parseInt(otherincome.val()||0)*1.3);
$j('.totalamountremaining').val(thirdinc);
$j('.totalamountremaining1').text(thirdinc);
}
}
});
$j('.minus').on('click',function(){
var $jqty=$j(this).closest('span').find('.qty');
var currentVal = parseInt($jqty.val());
if (!isNaN(currentVal) && currentVal > 1) {
$jqty.val(currentVal - 1);
if (!isNaN(currentVal) && currentVal == 2){
$j('.totalamountremaining').val(function(i, val) { return Math.round(val/1.5) });
$j('.totalamountremaining1').text(function(i, val) { return Math.round(val/1.5) });
}
if (!isNaN(currentVal) && currentVal == 3){
$j('.totalamountremaining').val(function(i, val) { return Math.round(val/1.4) });
$j('.totalamountremaining1').text(function(i, val) { return Math.round(val/1.4) });
}
if (!isNaN(currentVal) && currentVal == 4){
$j('.totalamountremaining').val(function(i, val) { return Math.round(val/1.3) });
$j('.totalamountremaining1').text(function(i, val) { return Math.round(val/1.3) });
}
}
});
var primaryincome = $j("#addnumber");
$j(".calculate").click(function () {
var $jqty=$j('.addno').closest('span').find('.qty');
var currentVal = parseInt($jqty.val());
if (!isNaN(currentVal) && currentVal == 1){
var totalincome = Math.round(parseInt(primaryincome.val()||0) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 2){
var totalincome = Math.round((Math.ceil(parseInt(primaryincome.val()||0) * 1.5)) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 3){
var totalincome = Math.round((Math.ceil(parseInt(primaryincome.val()||0) * 1.5) * 1.4) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 4){
var totalincome = Math.round((Math.round(Math.ceil(parseInt(primaryincome.val()||0) * 1.5) * 1.4)*1.3) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
$j('.plan.shopifytask .add').hide();
$j('.plan.shopifytask .remove').show();
$j('.plan.shopifytask').removeClass('yetadd');
})
$j(".shopifytask-remove").click(function () {
var $jqty=$j('.minus').closest('span').find('.qty');
var currentVal = parseInt($jqty.val());
if (!isNaN(currentVal) && currentVal == 1){
var totalincome = Math.round(parseInt(otherincome.val()||0) - parseInt(primaryincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 2){
var totalincome = Math.round((parseInt(otherincome.val()||0) - Math.ceil(parseInt(primaryincome.val()||0) * 1.5)));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 3){
var totalincome = Math.round((parseInt(otherincome.val()||0) - Math.round(Math.ceil(parseInt(primaryincome.val()||0) * 1.5)*1.4)));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 4){
var totalincome = Math.round(parseInt(otherincome.val()||0) - Math.round(Math.round(Math.ceil(parseInt(primaryincome.val()||0) * 1.5)*1.4)*1.3));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
$j('.plan.shopifytask .add').show();
$j('.plan.shopifytask .remove').hide();
$j('.plan.shopifytask').addClass('yetadd');
})
var primaryincome4 = $j("#addnumber4");
$j(".calculate4").click(function () {
var $jqty=$j('.addno').closest('span').find('.qty');
var currentVal = parseInt($jqty.val());
if (!isNaN(currentVal) && currentVal == 1){
var totalincome = Math.round(parseInt(primaryincome4.val()||0) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 2){
var totalincome = Math.round((Math.ceil(parseInt(primaryincome4.val()||0) * 1.5)) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 3){
var totalincome = Math.round((Math.ceil(parseInt(primaryincome4.val()||0) * 1.5) * 1.4) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 4){
var totalincome = Math.round((Math.round(Math.ceil(parseInt(primaryincome4.val()||0) * 1.5) * 1.4)*1.3) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
$j('.plan.designtask .add').hide();
$j('.plan.designtask .remove').show();
$j('.plan.designtask').removeClass('yetadd');
})
$j(".designtask-remove").click(function () {
var $jqty=$j('.minus').closest('span').find('.qty');
var currentVal = parseInt($jqty.val());
if (!isNaN(currentVal) && currentVal == 1){
var totalincome = Math.round(parseInt(otherincome.val()||0) - parseInt(primaryincome4.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 2){
var totalincome = Math.round((parseInt(otherincome.val()||0) - Math.ceil(parseInt(primaryincome4.val()||0) * 1.5)));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 3){
var totalincome = Math.round((parseInt(otherincome.val()||0) - Math.round(Math.ceil(parseInt(primaryincome4.val()||0) * 1.5)*1.4)));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 4){
var totalincome = Math.round(parseInt(otherincome.val()||0) - Math.round(Math.round(Math.ceil(parseInt(primaryincome4.val()||0) * 1.5)*1.4)*1.3));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
$j('.plan.designtask .add').show();
$j('.plan.designtask .remove').hide();
$j('.plan.designtask').addClass('yetadd');
})
var primaryincome5 = $j("#addnumber5");
$j(".calculate5").click(function () {
var $jqty=$j('.addno').closest('span').find('.qty');
var currentVal = parseInt($jqty.val());
if (!isNaN(currentVal) && currentVal == 1){
var totalincome = Math.round(parseInt(primaryincome5.val()||0) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 2){
var totalincome = Math.round((Math.ceil(parseInt(primaryincome5.val()||0) * 1.5)) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 3){
var totalincome = Math.round((Math.ceil(parseInt(primaryincome5.val()||0) * 1.5) * 1.4) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 4){
var totalincome = Math.round((Math.round(Math.ceil(parseInt(primaryincome5.val()||0) * 1.5) * 1.4)*1.3) + parseInt(otherincome.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
$j('.plan.wptask .add').hide();
$j('.plan.wptask .remove').show();
$j('.plan.wptask').removeClass('yetadd');
})
$j(".wptask-remove").click(function () {
var $jqty=$j('.minus').closest('span').find('.qty');
var currentVal = parseInt($jqty.val());
if (!isNaN(currentVal) && currentVal == 1){
var totalincome = Math.round(parseInt(otherincome.val()||0) - parseInt(primaryincome5.val()||0));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 2){
var totalincome = Math.round((parseInt(otherincome.val()||0) - Math.ceil(parseInt(primaryincome5.val()||0) * 1.5)));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 3){
var totalincome = Math.round((parseInt(otherincome.val()||0) - Math.round(Math.ceil(parseInt(primaryincome5.val()||0) * 1.5)*1.4)));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
if (!isNaN(currentVal) && currentVal == 4){
var totalincome = Math.round(parseInt(otherincome.val()||0) - Math.round(Math.round(Math.ceil(parseInt(primaryincome5.val()||0) * 1.5)*1.4)*1.3));
$j('.totalamountremaining').val(totalincome);
$j('.totalamountremaining1').text(totalincome);
}
$j('.plan.wptask .add').show();
$j('.plan.wptask .remove').hide();
$j('.plan.wptask').addClass('yetadd');
})
})(jQuery);
.plan.yetadd .remove {
display: none;
}
.plan-total{
margin-top:50px;
}
.plan-total-price{
margin-left:20px
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<div class="plan">
<span class="plan-text">Active Tasks
<span class="plan-qty addminus">
<i class="fa fa-minus-square-o minus target1" id="minus2" aria-hidden="true"></i>
<input id="qty2" value="1" class="qty" disabled="" type="text">
<i class="fa fa-plus-square-o addno target" id="add2" aria-hidden="true"></i>
</span>
</div>
<div class="plan yetadd designtask">
<span class="plan-text">Task1
<span class="plan-qty qtywidth">
<button class="remove designtask-remove"><i class="fa fa-minus-square-o" aria-hidden="true"></i>Remove</button>
<button class="add calculate4">
<i class="fa fa-plus-square-o" aria-hidden="true"></i>
<span>Add</span>
</button>
<span class="dolorsign">$</span>
<input value="149" id="addnumber4" class="primaryincome" disabled="" type="text">
<span class="super">/month</span>
</span>
</div>
<div class="plan yetadd wptask">
<span class="plan-text">Task2
<span class="plan-qty qtywidth">
<button class="remove wptask-remove"><i class="fa fa-minus-square-o" aria-hidden="true"></i>Remove</button>
<button class="add calculate5">
<i class="fa fa-plus-square-o" aria-hidden="true"></i>
<span>Add</span>
</button>
<span class="dolorsign">$</span>
<input value="39" id="addnumber5" class="primaryincome priceleft" disabled="" type="text">
<span class="super">/month</span>
</span>
</div>
<div class="plan yetadd shopifytask">
<span class="plan-text">Task3
</span>
<span class="plan-qty qtywidth">
<button class="remove shopifytask-remove"><i class="fa fa-minus-square-o" aria-hidden="true"></i>Remove</button>
<button class="add calculate">
<i class="fa fa-plus-square-o" aria-hidden="true"></i>
<span>Add</span>
</button>
<span class="dolorsign">$</span>
<input value="79" id="addnumber" class="primaryincome priceleft" disabled="" type="text">
<span class="super">/month</span>
</span>
</div>
<div class="plan-total">
<span class="plan-total-text">PLAN TOTAL:</span>
<span class="plan-total-price">
<span class="totaldolar">$</span>
<input class="totalamountremaining primaryincome priceleft2 price-bold-total" value="0" disabled="" id="txt" type="hidden">
<span class="totalamountremaining1 primaryincome priceleft2 price-bold-total">0</span>
<span class="super-total">/month</span>
</span>
</div>
最佳答案
只是一个快速提示。 将数据与 DOM 分开。
每当您单击减号或加号按钮时,都会从 0 重新计算金额。 例如,如果您有两个事件任务并添加了 Task1 和 Task2,您将获得 283 美元。
如果你移除一个事件任务,不要从283$开始,从0开始重新计算。 float 误差随着你从之前的值不断计算而累积。
关于javascript - 使用 math.round() 添加和删除值的 jquery 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51112785/