2014-09-01 129 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

相關問題