2013-02-23 25 views
-3

我正在计算基于小时分钟和秒表的总分钟数的代码。Javascript总和没有返回正确的值

我一直在吃我的nervs,不知道为什么值是错误的,小时现场得到的乘以600而不是60,分钟加起来也错了,似乎是一团糟。

这里是我的代码

<table width="90%"><tr> 
<td><input size="4" type="text" name="<?php esc_attr_e($field->field_id); ?>hrs" /> </td> 
<td><input size="4" type="text" name="<?php esc_attr_e($field->field_id); ?>mins" /></td> 
<td><input size="4" type="text" name="<?php esc_attr_e($field->field_id); ?>secs" /></td> 
<td><input size="10" type="text" name="<?php esc_attr_e($field->field_name); ?>" id=" <?php esc_attr_e($field->field_id); ?>" class="attachments attachments-field attachments-field-<?php esc_attr_e($field->field_name); ?> attachments-field-<?php esc_attr_e( $field->field_id); ?>" value="<?php esc_attr_e($field->value); ?>" readonly/></td> 
</tr><tr><td>&nbsp;&nbsp;&nbsp;Hours</td><td>&nbsp;&nbsp;Minutes</td> <td>&nbsp;Seconds</td><td>&nbsp;&nbsp;&nbsp;Audio Minutes</td></tr></table> 

脚本:

jQuery(document).ready(function($) 
{ 
    $('input[name="<?php esc_attr_e($field->field_id); ?>hrs"],input[name="<?php esc_attr_e($field->field_id); ?>mins"],input[name="<?php esc_attr_e($field->field_id); ?>secs"]').change(function() 
    { 
     var sum = parseFloat($('input[name="<?php esc_attr_e($field->field_id); ?>hrs"]').val() * 60) + parseFloat(($('input[name="<?php esc_attr_e($field->field_id); ?>mins"]').val()) + parseFloat($('input[name="<?php esc_attr_e($field->field_id); ?>secs"]').val()/60)).toFixed(2) 
     $('input[name="<?php esc_attr_e($field->field_name); ?>"]').val(parseFloat(sum)); 
    }) 

任何想法?

+1

“......似乎是一团糟。 ..“ - 这正是代码所在。 – 2013-02-23 15:33:40

+1

@Ioan添加一些缩进,我可能愿意帮助 – 2013-02-23 15:34:42

+1

请发布生成的HTML,而不是您的服务器端代码。 – 2013-02-23 15:45:27

回答

1

你的圆括号在错误的地方。您的代码表示:

parseFloat($('input[name=fieldname]').val() * 60) 

应该说:

parseFloat($('input[name=fieldname]').val()) * 60 

(同与分工秒计算的60建议)

+0

感谢您的回复,但我的结果仍然没有结果。它适用于每个单独的转换(hrs,secs),但是在总计而不是总和分钟中,我将这些值连接起来。 2小时10分钟变成12010分钟而不是130分钟 – Ioan 2013-02-23 16:01:32

+0

如果你的值是串联的,那就意味着JS认为它们是字符串。在这种情况下,我会说你在某个地方仍然存在问题。形式为'parseFloat(a)+ parseFloat(b)+ parseFloat(c)'的代码不应该连接。 – 2013-02-23 16:44:33

+0

我会仔细检查你的'toFixed()' - 它返回一个字符串值。表达式'parseFloat(“3”)+ parseFloat(“4”)。toFixed(2)'返回'34.00',而不是'7.00'。再次,错位的parens。 – 2013-02-23 16:48:15