javascript - 使用 math.round() 添加和删除值的 jquery 问题

标签 javascript jquery html css

我正在我的站点中处理自定义计划 的功能。 随着事件任务的值的增加或减少,有一些任务可以习惯性地添加或删除..

事件任务中有四个值: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/

相关文章:

javascript - 围绕其内容调整动态创建的 div 的大小

javascript - onmouseover 事件 JavaScript 链接

javascript - Material UI 图标无法正确渲染

javascript - 如何使用javascript和css为选择中的选项设置不透明度?

android - HTML5 音频在 Android 平台上的 PhoneGap 中不起作用

html - css 淡出边缘的框阴影

javascript - 如何触发网页上 HTML 按钮的点击?

javascript - JS : Prevent images loading lazy after setting to display:block

javascript - jQuery - 在垂直鼠标滚动时水平动态移动元素 - 滚动方法不适用于自定义变量

javascript - MVC View 文件 _Layout.cshtml 中 head 和 body 的 Render Bundle 之间的区别