javascript - jquery总计时间不正确

标签 javascript jquery html each

所以我的网站上有以下 HTML 表格

<div class="timecard">
<table>
<tr class = "display-even-row">
    <td align="left" style="color:#000099">In</td>
    <td align="left" class="job_code">2400-Duffy's</td>
    <td align="left" class="hrs">00:04</td>
</tr>
<tr class = "display-odd-row">
    <td align="left" style="color:#009900">In</td>
    <td align="left" class="job_code">1500-Orchard</td>
    <td align="left" class="hrs">01:00</td>
</tr>
<tr class = "display-even-row">
    <td align="left" style="color:#000099">In</td>
    <td align="left" class="job_code">32-Black</td>
    <td align="left" class="hrs">10:00</td>
</tr>
<tr class = "display-odd-row">
    <td align="left" style="color:#009900">In</td>
    <td align="left" class="job_code">1500-Orchard</td>
    <td align="left" class="hrs">4</td>
</tr>
</table>
</div>

<div id="total">
</div>

我有以下 jquery 脚本来计算每个工作代码的总小时数。它是动态设计的,以便以后添加更多工作代码。但是,它无法正确添加小时数,但不会显示作业是否有分钟数。

$(document).ready(function(){

var timeString = $(this).next('td.hrs').text();
var components = timeString.split(':');
var seconds = components[1] ? parseInt(components[1], 10) : 0;
var hrs = parseInt(components[0], 10) + seconds / 60;
total += hrs;

var temp = [];
$('.job_code').each(function(index, element){
    var text = $(this).text();
    temp.push(text);
});

// remove duplicates
var job_code = [];
$.each(temp, function(index, element){
    if($.inArray(element, job_code) === -1) job_code.push(element);
});

var sum = {};
$.each(job_code, function(index, element){
    var total = 0;
    $('.job_code:contains('+element+')').each(function(key, value){
        total += parseInt($(this).next('td.hrs').text());
        sum[index] = {'job_code' : element, 'total': total};
    });
});

console.log(sum);

$.each(sum, function(index, element){
    $('#total').append('<p>Total for '+element.job_code+': '+element.total+'</p>');
});

});

您有什么想法需要进行哪些更改才能使此功能适用于 00:00 而不仅仅是整个整数?提前致谢。

最佳答案

如果不使用日期/时间解析库,您可能需要在尝试解析冒号两侧的整数字符串之前提取它们。

var timeString = $(this).next('td.hrs').text();
var components = timeString.split(':');
var seconds = components[1] ? parseInt(components[1], 10) : 0;
var hrs = parseInt(components[0], 10) + seconds / 60;
total += hrs;

您也可以使用正则表达式来执行此操作,但拆分应该可以正常工作。

关于javascript - jquery总计时间不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23743898/

相关文章:

javascript - 如何使用 jQuery 在 JavaScript 中获取基于类的对象?

javascript - div悬停,显示 "read more"链接溢出

javascript - 如何使用显示 : 'auth.login' . 的 FB.ui({ 方法 : 'iframe' instead of 'popup' ? ..)

jquery 2.0 jquery ui datepicker bug - 未捕获的 TypeError : Cannot read property 'append' of undefined

javascript - 要求选中表格上的所有框

html - 显示带有口号而不是文本的图像并且仍然具有正确的 HTML 结构的正确方法是什么?

javascript - Material ui DatePicker 仅启用年份

javascript - jquery $.get() 不使用 https

html - 水平对齐 DIV 容器内的文本

javascript - Bootstrap 多个下拉菜单更改相应的按钮文本