2011-02-10 96 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