Javascript 如何从数学函数内部调用特定值?

Javascript 如何从数学函数内部调用特定值?,javascript,forms,math,Javascript,Forms,Math,在这段代码中,我根据一个表单添加了一些值,然后减去创建新总数的最低值。代码工作得很好。我想做的是,我想要3个,而不是只在底部有新的总数。一个是没有减法的原始总数,一个是我减去的最低价格的值,最后是实际的新总数。到目前为止,它只显示新的总数 示例:共有3件物品,一条围巾5美元,一顶帽子10美元,一件夹克20美元。我加上所有等于35美元的值,然后减去最低值,即围巾5美元,得到新的总数30美元。我想在底部显示这个 总额:35美元 折扣:$-5 新总数:30美元 函数已经计算出了所有这些值,我只是不知道

在这段代码中,我根据一个表单添加了一些值,然后减去创建新总数的最低值。代码工作得很好。我想做的是,我想要3个,而不是只在底部有新的总数。一个是没有减法的原始总数,一个是我减去的最低价格的值,最后是实际的新总数。到目前为止,它只显示新的总数

示例:共有3件物品,一条围巾5美元,一顶帽子10美元,一件夹克20美元。我加上所有等于35美元的值,然后减去最低值,即围巾5美元,得到新的总数30美元。我想在底部显示这个

总额:35美元 折扣:$-5 新总数:30美元

函数已经计算出了所有这些值,我只是不知道如何从函数中调用它们

// All selected prices are stored on a array
var prices = [];

// A function to remove a item from an array
function remove(array, item) {
    for (var i = 0, len = array.length; i < len; i++) {
        if (array[i] == item) {
            array.splice(i, 1);
            return true;
        }
    }
    return false;
}

function calculateSectedDues(checkbox, amount) {
    // We add or remove the price as necesary

if (checkbox.checked) {
    prices.push(amount);
} else {
    remove(prices, amount);
}

// We sum all the prices
var total = 0;
for (var i = 0, len = prices.length; i < len; i++)
    total += prices[i];

// We get the lower one
var min = Math.min.apply(Math, prices);


if(min == Infinity) { min = 0; };

// And substract it
total -= min;

document.grad_enroll_form.total.value = total;
//所有选定的价格都存储在一个数组中
var价格=[];
//从数组中删除项的函数
函数删除(数组、项){
对于(变量i=0,len=array.length;i

}

这里有一些基本代码供您编写值。我仍然不同意你从数组中删除元素的循环

<span id="value"></span>
给出此输出:

总计:$35
折扣:$-5
新总计:$30


使用复选框
围巾
帽子
夹套
总计:$0
折扣:$0
新总计:$0
我不知道您的HTML是什么样子的,但类似的东西可以工作。它使用jQuery获取所有选中的复选框,并将这些复选框的值添加到总数中,并跟踪最小值。然后它返回单个对象中的所有三个值

我假设您的复选框的值是项目的价格,这可能不是真的。如果没有,这个想法仍然有效,你只需要做更多的工作来获得正确的价格

function calculate() {
    var total = 0, 
        discount = 0
    ;

    $('input[type="checkbox"]:checked').each(function() {
        var val = parseFloat($(this).val());

        if(discount === 0 || val < discount) {
            discount = val; // keep track of minimum
        }

        total += val;
    });

    //return all three values in one object
    return {
        total: total,
        discount: disount,
        discountedPrice: (total - discount)
    }
}
函数计算(){
var总计=0,
折扣=0
;
$('input[type=“checkbox”]:checked')。每个(函数(){
var val=parseFloat($(this.val());
如果(折扣===0 | | val<折扣){
折扣=val;//跟踪最低折扣
}
总+=val;
});
//在一个对象中返回所有三个值
返回{
总计:总计,
折扣:退票,
折扣价格:(总计-折扣)
}
}

Sorry@DJDavid98。人们不断提交格式更改,我只是觉得我的措辞不正确,所以我以几种不同的方式重新提交了它。我很抱歉让你感到困惑,但我真的很感谢你坚持到底。所以你说的是我负责。CalculateSelectedDues({checked:true},10),我将列出所有的值,或者我可以将它们添加到我的表单中吗?@colestrode yes,底部还有一段代码,试试@DJDavid98,它工作得非常好!有没有办法在复选框之前强制显示合计、折扣和新合计?@DJDavid98你是一台机器!非常感谢您的帮助。@DJDavid98如果我想在总计、折扣和新总计之前添加一些内容,并使其成为设定值,我该怎么办?如果用户只选择一个项目,会发生什么?在这种情况下,解约后的总价格将为0…这实际上与我所做的是好的,但我可以看到这可能是一个问题的人。
calculateSectedDues({checked:true},10);
calculateSectedDues({checked:true},20);
calculateSectedDues({checked:true},5);
<label><input type="checkbox" onclick="calculateSectedDues(this,5)" name="Scarf"> <span>Scarf</span><label><br>
<label><input type="checkbox" onclick="calculateSectedDues(this,10)" name="Hat"> <span>Hat</span><label><br>
<label><input type="checkbox" onclick="calculateSectedDues(this,20)" name="Jacket"> <span>Jacket</span><label><br>

<span id="value">Total: $0<br>Discount: $0<br>New total: $0</span>
function calculate() {
    var total = 0, 
        discount = 0
    ;

    $('input[type="checkbox"]:checked').each(function() {
        var val = parseFloat($(this).val());

        if(discount === 0 || val < discount) {
            discount = val; // keep track of minimum
        }

        total += val;
    });

    //return all three values in one object
    return {
        total: total,
        discount: disount,
        discountedPrice: (total - discount)
    }
}