繁体   English   中英

使用动态值进行计算

[英]calculate using dynamic values

如果我需要使用具有动态值的某些公式来计算某些内容。 问题是此公式正在根据表示的值进行更改,例如,我不想在公式中包含零值元素。

var one = $('#one').val();
var two= $('#two').val();
var three= $('#three').val();
var four= $('#four').val();
...
var ten= $('#ten').val();

公式就像

(one * two) + (three * 4) + (five * 5) + ...

我应该注意很多情况。 如果3是NaN0 ,则应跳过该部分,其他所有元素都应相同。

你会怎么做?

我将公式分成几部分,为每个公式提供自己的方法,然后将这些方法插入公式中。 在这些方法中,我将检查0或NaN值,并返回所需的结果。 例如,在上面的示例中,如果三个是0或NaN,我将从其方法部分返回4。 如果可以使用它的值,那么我将根据需要返回3 * 4。

您可以对5 * 5使用相同的方法。依此类推。 如果您的方法总是某个数字乘以另一个数字,或者返回不为零的那个,则让它接受两个整数并传入所需的值或变量。

就像是:

MultiplyOrReturnWhicheverIsNotZero(num1, num2){

    if (num1 === NaN || num1 === 0) return num2;
    if (num2 === NaN || num2 === 0) return num1;
    return num1 * num2

}

当值设置为0时,它将“忽略”该部分,因为0 * X = 0并且数字加0仍然是数字? 如此忽略? 因此,您可以为html中的每个number元素赋予一个您希望在我的情况下使用其“ .numbers”的类。 并遍历它们,创建一个对象,并为每个非整数赋予值0 ...然后将该新生成的对象集成到您的公式中。 除此之外,您可以更改该值,该数字应为NaN,该数字应在函数之前获得。

通过这种方式,您可以使用循环声明所有元素,而不必这样做:

var one = $('#one').val();
var two= $('#two').val();
var three= $('#three').val();
var four= $('#four').val();
...

没有测试它,但它应该做的工作。

var alternativeNumber = 0;
$('.numbers').each(function(alternativeNumber){

    var id        = $this.attr('id');
    var val       = '';
    var numberObj = {};

    if (isNaN($($this).val())) {
        val = alternativeNumber;
    } else {
        val = $this.val();
    }
    numberObj[id] = val;

    return numberObj;
});

(numberObj.one * numberObj.two) + (numberObj.three * 4) + (numberObj.five * 5) + ...

我认为这里真正的交易是变量之一不是数字时。

// example
var one = isNaN($('#one').val()) ? 0 : $('#one').val();

首先-将一个类添加到您的div中,例如to_calculate

您可以向此类添加事件:

$('.to_calculate').on('change', function(){
  if(parseInt($(this).val()) != 'NaN'){
    make_calculations()
  }
})

然后将您的计算结果放入make_calculations函数中

我带了一个示例html,并假设您要做什么。 我创建了一个小提琴 $(document).on('click', '.calculate', function(){ var formula = ''; var value = 0; $('.calcualte_field').each(function(i,j){ ++i var val = $(this).val(); // + put your condition here if(!isNaN(val) && val){ formula +='('+val+' * '+i+') +'; value +=(i * val); } }); alert(value); $(".result").text("Your formula is "+formula +"\\n result is :=" +value); })可能会对您有所帮助。 我刚刚放置条件的地方,可以添加条件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM