2015-03-25 87 views
-1
大家

您好我有一個代碼的問題,我想看看固定: 這裏是我的else if聲明:parseInt函數codebreak

var x = parseInt(2); 
var out = document.getElementById("output"); 

var w = prompt("hunt or farm? dare to fight?"); 

out.innerHTML = w; 

else if (w === "farm") { 

    var farm = document.getElementById("farm").innerHTML; 

    farm = parseInt(farm) + x; 

    document.getElementById("farm").innerHTML = farm; 
} 

在HTML中使用的div我有聯繫的某些東西,使文本的基礎戰略遊戲。但我的問題是農場是NaN(不算數字)我已經放置了「parseInt」來嘗試解決這個問題,但它仍然提出「NaN」。什麼我做,以確保,而不是2 + 2 = 22做出2 + 2 = 4

+0

沒有'如果'你不能'其他如果' – mohamedrias 2015-03-25 04:33:10

+0

是的我知道,它只是我的代碼的一部分即時通訊使用爲例 – 2015-03-25 04:34:25

+0

這是無效的JS。什麼是'else'連接到?什麼是農場元素?一個'輸入'?那麼你需要得到它的'value',而不是它的'innerHTML'。 – 2015-03-25 04:34:26

回答

0
try this hope its working for you 


    var farm = document.getElementById("farm").innerHTML; 

    farm = parseInt(farm + x); 

    document.getElementById("farm").innerHTML = parseInt(farm);} 
+0

不太可能工作,請嘗試測試它。首先,'farm'的'innerHTML',假設它是'input',將會是空的。向任何東西添加'null',然後執行結果的'parseInt'不會做任何有用的事情。 – 2015-03-25 04:35:37

+0

另外我不認爲農場是一個輸入,因爲OP使用innerHTML代替值 – mohamedrias 2015-03-25 04:37:03

0

你需要確保與farm ID的innerHTML元素與數字,而不是字母開頭。 x也是如此。另外,他們需要至少有一個號碼。嘗試parseInt("hello12345"),你會得到NaN像你一樣。 parseInt("hello")也是如此。嘗試添加NaN和一個數字,你仍然會得到NaN,就像你可能做的那樣。 parseInt("hello12345hello") + parseInt("12345hello")將返回NaNparseInt("12345hello")將返回12345。這段代碼將使用正則表達式解析出前導字母"hello12345".replace(/^(\D+)/, "")將導致12345。但是,在使用它之前,您可能需要檢查是否有任何數字,因爲只有字母會導致NaN。有關在JavaScript的parseInt函數返回NaN看看文檔https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

0

貌似farm更多信息是DIV /塊元素:

這是更好地檢查修整,同時還應後內farm值有效確保它是有效的號碼。

var farm = document.getElementById("farm").innerHTML.replace(/\s/gm,""); 
    // trimming any empty spaces 
    // checking for is it a valid number 
    farm = farm!="" && !isNaN(farm)? parseInt(farm) + x : x; 
    document.getElementById("farm").innerHTML = farm; 

DEMO

如果farm是一個文本輸入框,只需用value取代innerHTML和相同的代碼將正常工作

0

這很適合我,假設我明白你的」重新嘗試去做。我將farm's innerHTML傳遞給​​構造函數。替代方案將使用parseInt或更好的是,其縮寫變體:+farm.innerHTML + x

var x = parseInt(2), 
     w = prompt("hunt or farm? dare to fight?"); 

    if (w === 'farm') { 
    var farm = document.getElementById("farm"), 
     out = document.getElementById("output"), 
     farmValue = Number(farm.innerHTML) + x; 

    out.innerHTML = w; 
    farm.innerHTML = farmValue; 
    }; 
0

正如您使用innerHtml來獲取值,所以我假設這不是一個輸入元素。 var farm = document.getElementById("farm").innerHTML;

如果是這種情況,那麼確保你得到的innerHtml是一個數字,如果是,那麼與pasreInt結果將是一個數字。 由於innerHtml也包含html標籤,所以您可以嘗試使用innerText。 它總是返回可以應用parseInt/parseFloat獲取其整數部分的元素中包含的文本。

希望這會有所幫助。