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 );
...隐式将其转换为字符串,作为设置输入值的一部分。
当单选按钮切换时,我需要将输入文本类型字段中的数字从摄氏度转换为开尔文:
$('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 );
...隐式将其转换为字符串,作为设置输入值的一部分。