2015-11-08 32 views
-3

嗯,我有這個我在想parseFloat什麼問題,它返回NaN

,我這樣做

function CheckLevel() { 
 
    var PlyLevel = parseFloat(document.getElementById("player_level").innerHTML); 
 
    return PlyLevel 
 
} 
 
alert(CheckLevel());
<div id="player_level">level 338</div>

並獲得back

NaN 

我做錯了什麼?

+1

什麼** **確切的'player_level' –

+0

什麼是價值含量 「的document.getElementById(」 PLAYER_LEVEL 「).innerHTML」? – PMerlet

+0

'我有這個' - 這是一個圖像...你需要在javascript中編寫一個OCR程序來獲得一個數字 –

回答

1

在您的情況下,字符串不以數字開頭,因此它總是會返回NaN

如果第一個字符不能轉換爲數字,parseFloat會返回NaN。 (摘自documentation)。

因此,使用正則表達式獲取浮點值並解析它。 match(/\d+(?:\.\d+)?/)將匹配字符串中的任何浮點值。

function CheckLevel() { 
 
    var PlyLevel = parseFloat(document.getElementById("player_level").innerHTML.match(/\d+(?:\.\d+)?/)[0]); 
 
    return PlyLevel 
 
} 
 
alert(CheckLevel());
<div id="player_level">level 332.3</div>

Regex explanation here

Regular expression visualization

+0

它工作!現在,你放在那裏的任何事情實際上意味着什麼。 –

+0

@JamesB:如果第一個字符不能轉換爲數字,parseFloat會返回NaN –