【问题标题】:Jquery: val() float numbers - need to change values, not concatenate themJquery:val() 浮点数 - 需要更改值,而不是连接它们
【发布时间】:2015-10-06 10:32:01
【问题描述】:

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

$('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() 添加到每个变量,但情况并没有改变。

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

谢谢!

【问题讨论】:

  • 您所描述的内容不会发生在您显示的示例代码中。您的代码中还有其他内容可以连接这些值。您必须展示一个复制问题的示例。
  • 谢谢。我添加了代码
  • 问题在于函数kelvinToCelsius() 和/或celsiusToKelvin()。也给他们看。

标签: javascript jquery concatenation parsefloat


【解决方案1】:

让我们看看这一行:

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

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

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

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

这样,当celsiusToKelvin 这样做时

return celsiusTemp + 273.15;

...它在做 addition,而不是字符串连接。

一旦您在kt1 中获得了结果数字,这一行:

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

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

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多