2016-09-05 64 views
0

我想計算4個不同值的總和,他們都是使用他們在dom中的數據標籤來計算的,但是我不知道如何獲取其中四個值的總和結合起來,這是我的功能。總計4個不同的值Js

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> 

編輯:值得注意的是,四個值(價格)存儲在eac h他們的「.jsDisplayPrice」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

這是的,我想總的結合爲grandsum 4個用戶類別1

第一個大的號碼是用戶,數量下面的數字「19」是一個靜態數字,這個類別的每個用戶將花費什麼,下一行是該特定類別的當前總價格與價格*數量,這是jsDisplayPrice .div最後一行應該是這個特定類別的總數,以及所有4個用戶類別的3個總和。

感謝您的閱讀。

+0

你能否提供一個有這4個價格的結構樣本? – trincot

+0

你能提供HTML/XML結構中的4個價格嗎? – trincot

+0

我編輯了整個html xsl標記的中間部分,下面顯示的圖片,這些框中有4個,他們每個都有他們自己的jsDisplayPrice(總數)顯示在裏面,但是我想要所有4個這樣的grandsum盒子,有意義嗎? – Madvillain

回答

0

我設法解決我不得不改變問題existiting 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函數的值已被格式化,所以它不會將其識別爲有效數字

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)); 
+0

你好jcubic,它返回我們已經知道和打印的價格,但乘以任何數量的用戶,(數量)的4個值的類別,我想四個值的總和加起來達到總計,jsDisplayPrice =價值總計,其中有4個,jsDisplayTotal =總計。:-) – Madvillain