2014-09-01 114 views
1

在编写一个小项目时,我在打印到控制台时遇到了NaN问题。我认为这将很容易通过使用JavaScript代码来弥补:NaN由于未知原因

newInt = parseInt(oldInt); 

这不是这种情况。读完NaN后,可以通过多种方式创建它,例如向对象中添加数组,或者当您尝试从字符串中删除数字时更常见。我说带走,因为向字符串添加数字意味着会发生串联。

我的密码是here。这是一个网站,但我使用出现和消失的div看起来不是。要获取错误,请按“开始冒险”。您可以使用默认值。

在控制台中,您可以通过按F12来访问它,它将打印出一组起始值。然后它将打印一组起始值,方便地将其组合在一起使用:

console.Group(); 
console.GroupEnd(); 

之后,当您按“下一年!它会打印两个组。通过功能

plantCrops(); 

由功能

buildWells(); 

创建正如你所看到的下一个创建的第一个,两个currentCrop评论是男 - 尽管使用parseInt函数大量服用precauations。有没有什么办法解决这一问题?尽管它应该非常简单,但它似乎很奇怪。

+0

我意识到这一点,但我已经使用了很多parseInt,为什么它不是一个数字?如果我理解正确,当从输入中获取值时,它总是一个字符串。不应该parseInt修复它? – 2014-09-01 10:28:43

+0

parseInt可能无法修复,如果输入未处于预期格式 – 2014-09-01 10:30:46

+0

测试时,我确实输入了一个数字。我看不出为什么它是一个字符串。我已经确保不包含空格或其他字符。 – 2014-09-01 10:33:57

回答

3

您的代码有许多问题,但一个是相关的NaN的是在这里:

currentCrop = document.getElementById("cropstored"); 
currentCrop = parseInt(currentCrop); 

此代码尝试从对象中解析int,这不起作用。

第一获取值:

currentCrop = document.getElementById("cropstored").value; 
currentCrop = parseInt(currentCrop); 

但要确保该元素不包含空字符串作为parseInt回报NaN它:

parseInt('') -> NaN 

其实,NaN是表明该值不能被解析为整数,所以你可以使用它作为无效数据的指示。

+0

谢谢,这个答案工作=) – 2014-09-01 10:40:57

0

在JavaScript

console.log(parseInt('')); 

将产生NaN的。

如果您在plantCrops()添加

console.log('cc'+ currentCrop); 
console.log('a' + parseInt(acres)); 

你会发现,他们都为NaN如果没有值在文本框中提供。

此外,对于currentCrop,我相信这是搞乱它行:

currentCrop = document.getElementById("cropstored"); 

即使是在顶部的默认值。

的解决方案将是一个简单的字符串相等测试前的parseInt()通话使用===操作:

if(someString === '') 
    defaultValue = ...; 
else 
    parseInt(); 
+0

好的,谢谢你的回答!现在测试。 – 2014-09-01 10:37:18