2013-02-05 60 views
0

我想要做的就是檢查每個輸入的價格,並將其作爲總和。jQuery提取數據並製作金額

這裏是我的代碼

function totalSum(e) { 
    e.preventDefault(); 
    var unit = $("input:checked").parent("dt").siblings("dd").find("span"); 
    total = 0; 
    $.each(unit, function(index, obj){ 
     total += parseInt($(obj).text(), 10); 
    }); 
    $("#totalPrice").html('<span class="count">€ ' + total + '</span> €'); 
} 

每個單元的跨度內找到。 Total設置爲0.我嘗試在每個檢查對象上調用parseInt,然後在一個範圍內添加總和。在HTML中,價格是這樣表述的:

<dd><span class="costo">€199</span></dd> 

所以當你看到有歐元標記。恐怕不能解析,這是嗎?因爲沒有改變!我應該如何寫它? 在此先感謝

好吧,我感到很慚愧,但我不能得到它的工作。我決定把代碼在其最小,所以我想這種方式

<body> 
    <div class="bla"><span class="count">1</span></div> 
    <div class="bla"><span class="count">1</span></div> 
    <div class="bla"><span class="count">1</span></div> 

    <div id="total"></div> 
    <script type="text/javascript" src="js/jquery-1.9.0.min.js" /></script> 
    <script> 
    $(document).ready(function(){ 


    function sum() { 
     var prices = $("div.bla").find(".count"); 
     total= 0; 
     $.each(prices, function(index, obj){ 
    total += parseFloat($(obj).text()); 
}); 

$("#total").html('<span class="count">'+total +'</span> €'); 
    }; 

}); 

這應該工作,但沒有出現。有人能告訴我發生了什麼事嗎?!

+0

檢查標誌,並從中刪除一個優雅的解決方案解析之前的字符串。 –

+1

http://stackoverflow.com/questions/559112/how-to-convert-a-currency-string-to-a-double-with-jquery-or-javascript – Dharman

回答

1

你可以簡單地從文本中刪除單元:

var text = $(obj).text().replace(/[€\$]/,''); // add other units if needed 
total += parseInt(text, 10); // are you sure you don't prefer parseFloat ? 

或者,如果你想只保留數字和+-,做

var text = $(obj).text().replace(/[^\d\-\+]/g, ''); 
+0

這似乎是一個非常合理的解決方案,但沒有出現它應該的領域。這裏是我的解決方案的HTML,如果它可以幫助

這是很奇怪的,我不明白我在做什麼錯 –

+0

放一個的console.log (單元)來檢查你的span元素是否被正確找到(這取決於你的確切的html樹)。如有必要,請在http://jsbin.com上小提琴,以便我們檢查它。 –

+0

該樹應該工作,我已經使用該配置與「兒童()」,而不是「find()」,它的工作 –

0

更改parseInt函數跳過第一字符。

total += parseInt($(obj).text().substring(1),10); 
1

只需更換任何非數字字符:

total += parseInt($(obj).text().replace(/[^\d.-]/, ''), 10); 

而且,你可以做unit.each()代替$.each(unit,但對你想要做什麼沒有影響。

+0

這似乎也是一個非常好的解決方案,謝謝你的重構建議。 –

0

幾天想和閱讀做到這一點的最好辦法之後,我相信這可能是什麼,我試圖實現:)

$("input").on("click", function() { 
    var j = $("input:checked"); 
    t = 0; 
    $(j).each(function() { 

     t += parseInt(this.value, 10); 
    }); 
    $("#total").html("<span>€ " + t + "</span>"); 
    });