Jquery: val() 浮点数 - 需要更改值,而不是连接它们

Jquery: val() float numbers - need to change values, not concatenate them

当单选按钮切换时,我需要将输入文本类型字段中的数字从摄氏度转换为开尔文:

$('input[name=temperature]').click(function(){

    var tempType = $('input[name=temperature]:checked').val();

    if( tempType == 'celsius' ){
        $('.scale').html('°C');
        if( $('#t1').val() && $('#t2').val() ){
            var kt1 = parseFloat( kelvinToCelsius( $('#t1').val() ) );
            var kt2 = parseFloat( kelvinToCelsius( $('#t2').val() ) );

            //$('#t1').val( '' );
            //$('#t2').val( '' );

            $('#t1').val( kt1 );
            $('#t2').val( kt2 );
        }//if
    }//celsius
    else if( tempType == 'kelvin' ){
        $('.scale').html('K');
         if( $('#t1').val() && $('#t2').val() ){
            var kt1 = parseFloat( celsiusToKelvin( $('#t1').val() ) );
            var kt2 = parseFloat( celsiusToKelvin( $('#t2').val() ) );


            $('#t1').val( kt1 );
            $('#t2').val( kt2 );
        }//if
    }//kelvin
});

function kelvinToCelsius( kelvinTemp){
      return kelvinTemp - 273.15;
}//kelvinToCelsius

function celsiusToKelvin( celsiusTemp){
    return celsiusTemp + 273.15;
}//celsiusToKelvin

输入字段中的数字结果是先前值的串联(可能 jQuery 将它们威胁为字符串,而不是数字)。

我什至尝试将 parseFloat() 添加到每个变量,但情况没有改变。

我想更改值,而不是连接它们:我怎样才能做到?

谢谢!

让我们看看这一行:

var kt1 = parseFloat( celsiusToKelvin( $('#t1').val() ) );

#t1获取字符串值(input元素中的value始终是一个字符串)并将其传递给celsiusToKelvin。然后,一旦 celsiusToKelvin 完成了它正在做的事情,它就会将返回的内容解析为浮点数。

celsiusToKelvin 期望收到 数字 ,而不是字符串。您想在 调用它之前 进行解析:

var kt1 = celsiusToKelvin( parseFloat( $('#t1').val() ) );

这样,当 celsiusToKelvin

return celsiusTemp + 273.15;

...它正在做 加法,而不是字符串连接。

kt1 中得到结果 number 后,此行:

$('#t1').val( kt1 );

...隐式将其转换为字符串,作为设置输入值的一部分。