2015-11-21 9 views
0

Привет, у меня есть несколько значений продолжительности, хранящихся в часах и секундах в входах html следующим образом;javascript перебирает значения длительности ввода и складывает

<input class="form-control user_actual_time" name="actual_time" type="text" value="30:30:00"> // (30 hours 30 mins 00 secs) 
<input class="form-control user_actual_time" name="actual_time" type="text" value="1:30:00">// (1 hours 30 mins 00 secs) 
<input class="form-control user_actual_time" name="actual_time" type="text" value="2:30:00">// (2 hours 30 mins 00 secs) 
<input class="form-control user_actual_time" name="actual_time" type="text" value="3:30:00"> // (3 hours 30 mins 00 secs) 

Я хочу рассчитать общую продолжительность и вставить это в другой ввод на странице. В приведенном выше примере должно выводиться в общей сложности 38 часов.

Однако со следующим кодом я получаю 3: 30: 0;

$("#calculate").on("click", function() { 

    var findtotal = $('.user_actual_time'); 
    var sum = 0; 
    $(findtotal).each(function() { 
     var usertime = $(this).val(); 
     duration = usertime.split(":"); 
     console.log(duration[0] + duration[1] + duration[2]); 
     console.table(duration); 
     hours = parseInt(duration[0]); 
     minutes = parseInt(duration[1]); 
     seconds = parseInt(duration[2]); 
     // Convert each 60 minutes to an hour 
     if (minutes >= 60) { 
      hours++; 
      minutes -= 60; 
     } 


     // Convert each 60 seconds to a minute 
     if (seconds >= 60) { 
      minutes++; 
      seconds -= 60; 
     } 

     var input = (hours+':'+minutes+':'+seconds); 



    $('#total').val(input); 
    }); 

}); 

У меня есть скрипка js ниже;

http://jsfiddle.net/8geour60/1/

Любые идеи, что я делаю неправильно и как я могу вычислить общую продолжительность?

ответ

1

дружище, вы не обновляя общую сумму, вам нужно обновить его, то вывод, `` проверить это:

$("#calculate").on("click", function() { 
var hours =0; 
var minutes=0; 
var seconds =0; 
var findtotal = $('.user_actual_time'); 
var sum = 0; 
$(findtotal).each(function() { 
    var usertime = $(this).val(); 
    duration = usertime.split(":"); 
    console.log(duration[0] + duration[1] + duration[2]); 
    console.table(duration); 
    hours = hours+parseInt(duration[0]); 
    minutes = minutes+parseInt(duration[1]); 
    seconds = seconds+parseInt(duration[2]); 
    // Convert each 60 minutes to an hour 
    if (minutes >= 60) { 
     hours++; 
     minutes -= 60; 
    } 


    // Convert each 60 seconds to a minute 
    if (seconds >= 60) { 
     minutes++; 
     seconds -= 60; 
    }  

    }); 
    var input = (hours+':'+minutes+':'+seconds); 
$('#total').val(input); 
}); 

Рабочая скрипку для вас: http://jsfiddle.net/woe74jq4/

+0

большой, который работал, спасибо! – 001221