2013-10-07 3 views
1

Привет У меня есть неизвестное количество входов с именем массива и классавход сумма массив с JQuery

<input type="hidden" name="hidden[1]" class="sum" value="31"> 
<input type="hidden" name="hidden[2]" class="sum" value="21"> 
<input type="hidden" name="hidden[3]" class="sum" value="321"> 
<input type="hidden" name="hidden[4]" class="sum" value="-31"> 
<input type="hidden" name="hidden[5]" class="sum" value="31.12"> 
<input type="hidden" name="hidden[6]" class="sum" value="0"> 

Вопрос в том, как сумма всех значений этих полей, что я стараюсь, чтобы использовать .each() и getElementByClassName, но это не буду работать

+2

могли бы вы показать свое нерабочий код ..? –

ответ

4

Я попытался с помощью каждого, он работал для меня. Проверьте, если вы использовали parseFloat ...
Если у вас есть «сумма» как класс, чтобы определить все элементы, которые должны быть рассчитаны, ниже код должен работать ....

$(document).ready(function() { 
    var total = 0; 
    $('.sum').each(function (index, element) { 
     total = total + parseFloat($(element).val()); 
    }); 
    alert(total); 
}); 
+0

, пожалуйста, пожалуйста, исправьте свое форматирование ... – Lix

+1

@ Lix, сделано ... спасибо, что поймали его .. :) – SridharVenkat

+0

спасибо за ответ, на самом деле это хорошо работает – DorienCragen

5

перебрать соответствующие элементы и добавить их значения вместе:

var total = 0; 
$(".sum").each(function(){ 
    total += parseFloat($(this).val()) || 0; 
}); 

Я использую $.each() перебрать все элементы, соответствующие .sum, а затем извлечь атрибут value с помощью .val(). Как только мы получим эту ценность, нам нужно убедиться, что она численная, поэтому я использовал parseFloat(). Если parseFloat() вернет значение фальши, будет использоваться 0.

Ссылки:

+2

parseInt (31.12) .. будет 31, но его 31.12 ..? –

+0

@sud - спасибо за эту обратную связь! Вы действительно правы. – Lix

+2

+1 для объяснения вместе с ответом ... :) –

0

Использование each функции JQuery для перебора input.sum элементов будет достаточно.

var sum = 0; 
$('input.sum').each(function() { 
    var value = +this.value || 0; 
    sum += value; 
}); 

Working demo

+0

@downvoter может объяснить вам почему? – letiagoalves

2
var totalSum = 0; 
$('.sum').each(function() { 
    totalSum += parseFloat(this.value); 
}); 

DEMO

+1

+1 для того, чтобы быть единственным, кто правильно использовал parseFloat вместо parseInt – Andy

1

вы можете сделать это, как этот

var total = 0; 
$('.sum').each(function() { 
total += parseFloat($(this).val()); 
}); 
Смежные вопросы