在编写一个小项目时,我在打印到控制台时遇到了NaN问题。我认为使用JavaScript代码很容易解决这个问题:
newInt = parseInt(oldInt);
事实并非如此。在读取NaN之后,可以通过多种方式创建它,例如向对象添加数组,或者更常见的是当您尝试从字符串中删除数字时。我说带走因为在字符串中添加一个数字意味着会发生连接。
我的代码可用here。这是一个网站,但我使用出现和消失的div看起来不是。要获得错误,请按"启动冒险"。您可以使用默认值。
在控制台中,您可以通过按 F12 进行访问,它将打印一组起始值。然后它将打印一组起始值,方便地使用以下方法组合在一起:
console.Group();
console.GroupEnd();
之后,当你按下"明年!"它将再打印两组。第一个由函数
创建plantCrops();
由函数
创建的下一个buildWells();
正如您所看到的,currentCrop注释都是NaN - 尽管通过使用parseInt进行了很多预防措施。有没有什么办法解决这一问题?尽管它应该非常简单,但它似乎很奇怪。
答案 0 :(得分:3)
您的代码存在许多问题,但与NaN相关的问题在于:
currentCrop = document.getElementById("cropstored");
currentCrop = parseInt(currentCrop);
此代码尝试从对象解析int,这不起作用。
首先获得价值:
currentCrop = document.getElementById("cropstored").value;
currentCrop = parseInt(currentCrop);
但请确保该元素不包含空字符串,因为parseInt
会为其返回NaN
:
parseInt('') -> NaN
实际上,NaN
表示该值无法解析为整数,因此您可以将其用作无效数据的指示。
答案 1 :(得分:0)
在JavaScript中
console.log(parseInt(''));
将产生NaN。
如果你添加
console.log('cc'+ currentCrop);
console.log('a' + parseInt(acres));
在plantCrops()
中,如果文本框中没有提供任何值,您会发现它们都是NaN。
此外,对于currentCrop
,我认为这就是弄乱它的路线:
currentCrop = document.getElementById("cropstored");
即使顶部有默认值。
在使用parseInt()
运算符进行===
调用之前,解决方案将是一个简单的字符串相等性测试:
if(someString === '')
defaultValue = ...;
else
parseInt();