Javascript 不知什么原因
在编写一个小项目时,我在打印到控制台时遇到了一个NaN问题。我认为这可以通过使用JavaScript代码轻松解决:Javascript 不知什么原因,javascript,nan,Javascript,Nan,在编写一个小项目时,我在打印到控制台时遇到了一个NaN问题。我认为这可以通过使用JavaScript代码轻松解决: newInt = parseInt(oldInt); 事实并非如此。阅读NaN之后,可以通过多种方式创建它,例如向对象添加数组,或者更常见的是,当您尝试从字符串中删除数字时。我之所以说take-away,是因为向字符串中添加一个数字意味着将发生串联 我的代码是可用的。这是一个网站,但我用出现和消失的div来表示它不是。要获取错误,请按“开始冒险”。可以使用默认值 在控制台中,您可
newInt = parseInt(oldInt);
事实并非如此。阅读NaN之后,可以通过多种方式创建它,例如向对象添加数组,或者更常见的是,当您尝试从字符串中删除数字时。我之所以说take-away,是因为向字符串中添加一个数字意味着将发生串联
我的代码是可用的。这是一个网站,但我用出现和消失的div来表示它不是。要获取错误,请按“开始冒险”。可以使用默认值
在控制台中,您可以按F12键访问该控制台,它将打印出一组起始值。然后,它将打印一组起始值,使用以下方法方便地组合在一起:
console.Group();
console.GroupEnd();
之后,当你按下“明年!”时,它会再打印两组。函数创建的第一个
plantCrops();
由函数创建的下一个
buildWells();
正如您所看到的,两个currentCrop注释都是NaN,尽管通过大量使用parseInt进行了预评估。有办法解决这个问题吗?奇怪的是,尽管它应该非常简单,但它却发生了。在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();
您的代码有许多问题,但与NaN相关的问题如下:
currentCrop = document.getElementById("cropstored");
currentCrop = parseInt(currentCrop);
这段代码试图从对象中解析int,但不起作用
首先获取值:
currentCrop = document.getElementById("cropstored").value;
currentCrop = parseInt(currentCrop);
但是确保元素不包含空字符串,因为parseInt
为其返回NaN
:
parseInt('') -> NaN
实际上,
NaN
表示无法将值解析为整数,因此可以将其用作无效数据的指示。我意识到这一点,但我已经使用了很多parseInt,为什么它不是一个数字?如果我理解正确,从输入中获取值时,它始终是字符串。parseInt不应该修复它吗?parseInt可能不会修复,如果测试时输入的格式不是预期的格式,我确实输入了一个数字。我看不出为什么它是一根绳子。我已确保不包含空格或其他字符。您确定请求的所有ID(例如document.getElementById(“cropstored”)
都正确吗?