4个不同值Js的总和

时间:2016-09-05 08:29:12

标签: javascript arrays dom sum

我正在尝试计算4个不同值的总和,它们都是使用dom中的数据标签计算的,但我不知道如何获取其中四个的总值,这是我的函数。 / p>

    function calculateUserPricing(initialValues: boolean) {
    var displayElements = ["jsSuperUser", "jsUser", "jsResourceUser", "jsRessource"];
    for (var i in displayElements) {
        var element = $("div." + displayElements[i]);
        var quantity = parseFloat(element.data("price"));
        var users;
        var total;
        if (initialValues) 
            users = parseInt(element.data("users"));
        else 
            element.find(".jsDisplayPrice").text(currencySymbol + " " + $.formatNumber(quantity * users, lineCurrencyFormat));  
    }     
        for (var i in displayElements) {
            total += $(displayElements[i]);
            element.find(".jsDisplayTotal").text(currencySymbol + " " + $.formatNumber(total, lineCurrencyFormat));        
    }
}

最后一点是我尝试获取值,但无济于事。

这是html,每个显示自己总值的元素看起来像这样,有4个这样的盒子,我需要他们的grandsum这是被归类为“jsDisplayTotal”的那个,显示各个盒子的本地总数,它们看起来都像这样:

        <div class="container jsRessource" int:title="Ressource" data-price="{../@resource-sys}"
            data-users="{@resources}">
            <div class="box boxSmTxt">
                <xsl:text><int:text>Ressource</int:text></xsl:text>
            </div>
            <div class="boxLgTxt">
                <xsl:value-of select="@resources" />
            </div>
            <span class="prMnd">
                <xsl:value-of select="../@resource"></xsl:value-of>
                <xsl:text> <int:text>/ måned</int:text></xsl:text>
            </span>
            <div class="priceBox">
                <span class="price">
                    <span class="prMnd">
                        <span class="jsDisplayPrice" id="resourcePrice">
                        </span>
                        <xsl:text> <int:text>i alt</int:text></xsl:text>
                        <br/>                       
                        <xsl:text><int:text>Totalsum:</int:text> </xsl:text>
                        <span class="jsDisplayTotal"></span>
                    </span>
                </span>
            </div>
        </div>

编辑:值得注意的是,四个值(价格)存储在每个“.jsDisplayPrice”div中,该div显示特定价格类别的总和,但是必须添加所有这四个价格总而言之。

EDIT2:尝试了一些东西,但它不起作用,只打印出0,任何反馈都会受到赞赏,代码示例如下:

 var totalElement = $('.jsDisplayTotal');
    function calculateTotal() {
        var total = 0;
        $('.jsDisplayPrice').each(function() {
            total += parseInt($(this).val());
        });
        totalElement.text(currencySymbol + " " + $.formatNumber(total, lineCurrencyFormat));
    }
    calculateTotal();

其工作原理的结构样本: Structural sample

这是4个用户类别中的1个,我试图将其与孙子的总和相结合

第一个大数字是用户数量,下面的数字“19”是静态数字,此类别的每个用户将花费多少,下一行是此特定类别的当前总价格与价格*数量,这是jsDisplayPrice .div,最后一行应该是这个特定类别的总数,还有3个组合,即所有4个用户类别的总数。

感谢阅读。

2 个答案:

答案 0 :(得分:1)

尝试:

var total = 0;
for (var i in displayElements) {
    var element = $("div." + displayElements[i]);
    var quantity = parseFloat(element.data("price"));
    var users;
    total += quantity;
}
element.find(".jsDisplayTotal").text(currencySymbol + " " + $.formatNumber(total, lineCurrencyFormat)); 

答案 1 :(得分:0)

我设法通过更改现有的calculateUserPricing()函数

来解决我遇到的问题 像这样:

function calculateUserPricing(initialValues: boolean) {
    var displayElements = ["jsSuperUser", "jsUser", "jsResourceUser", "jsRessource"];
    var total = 0;
    for (var i in displayElements) {
        var element = $("div." + displayElements[i]);
        var quantity = parseFloat(element.data("price"));
        var users;
        if (initialValues)
            users = parseInt(element.data("users"));
        else
            users = $(".entries tr.jsSuperUsers").length;
        var subtotal = quantity * users;
        total = total + subtotal;
        element.find(".jsDisplayPrice").text(currencySymbol + " " + $.formatNumber(subtotal, lineCurrencyFormat));
    }
    element.find(".jsDisplayTotal").text(currencySymbol + " " + $.formatNumber(total, lineCurrencyFormat));
}

将它合并到现有函数中更容易,更简单,因为calculateUserPricing函数的值已经格式化,因此无法将其识别为有效数字