总和而不是连接

时间:2013-02-23 16:18:47

标签: javascript

我有我的代码

sum=parseFloat($('input[name=fieldname]').val()) * 60 + 
parseFloat($('input[name=fieldname]').val()) + 
(($('input[name=fieldname]').val()) /60).toFixed(2).

它是来自felds的值,我输入持续时间,它应该给我几分钟的总和。 问题是我得到的总和连接3个字段而不是返回分钟数。

例如:1小时20分钟,我得到6020而不是(60 + 20)80

编辑:上面的代码是通用表单,这里是确切的代码。

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) 

2 个答案:

答案 0 :(得分:1)

它连接起因为你的语句中仍然有一个字符串。让我们快捷一下数字转换函数,然后用直接的语法来实现:

var h = $('input[name=hours]').val(),
    m = $('input[name=minutes]').val(),
    s = $('input[name=seconds]').val();
sum = 3600*(h|0) + 60*(m|0) + (s|0);

答案 1 :(得分:0)

toFixed()返回一个字符串,并将其连接到上一次计算的结果。使用此:

var input = parseFloat($('input[name=fieldname]').val());
sum = input * 60 + input + Math.round(input / 6000) * 100;

(如果您有单独的输入,则相同,我认为您明白了这一点)