2011-02-10 55 views
3
var result ="1fg"; 
for(i =0; i < result.length; i++){ 
    var chr = result.charAt(i); 
    var hexval = chr.charCodeAt(chr) 
    document.write(hexval + " "); 
} 

這給出的NaN 102 103JavaScript字符串爲int陣列

可能是因爲它的治療「1」作爲一個整數或類似的東西。有沒有一種方法可以將 「1」 - >字符串轉換爲正確的整數?在這種情況下:49.

因此,這將是

49 102 103,而不是爲NaN 102 103

乾杯,

蒂莫

+0

1.您是否聲明`i`? 2.不要在循環中放置聲明。最好事先聲明所有變量。看到這裏:http://jsfiddle.net/yJVSA/ – 2011-02-10 15:35:03

回答

7

charCodeAt該函數採用一個索引,而不是一個串。

當您傳遞一個字符串時,它會嘗試將字符串轉換爲數字,如果不能,則使用0

您的第一次迭代調用'1'.charCodeAt('1')。它將解析'1'作爲一個數字,並嘗試獲取字符串中的第二個字符代碼。由於字符串只有一個字符,即NaN

您的第二次迭代調用'f'.charCodeAt('f')。由於'f'不能被解析爲一個數字,它將被解釋爲0,它會給你第一個字符代碼。


您應該編寫var hexval = result.charCodeAt(i)以獲取原始字符串中給定位置的字符代碼。

您還可以編寫var hexval = chr.charCodeAt(0)以獲取chr字符串中單個字符的字符代碼。

+0

謝謝!我怎麼能看看這個!我不敢相信,我一直在看這個代碼現在幾個小時^^如果我可以給你100個upvotes – 2011-02-10 15:20:44