2013-08-01 106 views
0
$(document).on('pageshow','#temperatureContents',function(){ 
    $(document).off('click','#convertbtnTemp').on('click','#convertbtnTemp',function(){ 
     textFieldValue = $('#numberField').val(); 
    }); 
}); 

if(selectFrom == "celcius" && selectTo == "kelvin"){ 
    celToKel(selectFrom,selectTo,textFieldValue); 
} 

function celToKel(selectFrom,selectTo,textFieldValue){ 
    var value = Number(textFieldValue).toFixed(1); 
    var result = (value + 273.15); 
    displayResult(selectFrom,selectTo,result); 
} 

function displayResult(selectFrom,selectTo,result){ 
    $('#resultDiv').show(); 
    $('#resultDisplay').empty().append("the Result of " + selectFrom + " to " + selectTo + " is: " + result); 
} 

问题是这两条线也给我1 + 273.15 = 1.0273.15,但我想补充1 273.15怎样才能得到呢?JavaScript给出错误的结果?

var value = Number(textFieldValue).toFixed(1); 
var result = (value + 273.15); 

回答

2

Number.toFixed()的结果是一个字符串。因此,在您的代码中,+运算符将执行字符串连接,您将得到结果"1.0273.15"

你想要的可能更多沿着这些线。使用parseInt()将您的输入值转换为数字,然后进行计算并最终应用toFixed()以获得正确的小数位数。

// ... 
var value = parseInt(textFieldValue, 10); 
var result = (value + 273.15).toFixed(1); 
displayResult(selectFrom,selectTo,result); 
// ... 
0

变量value被视为一个字符串。可能是因为.toFixed(1)修改。但是,你可以再次通过执行以下

  1. result= (value*1) + 273.15
  2. result= parseInt(value) + 273.15
一个强制其为数字处理赌注