2016-01-19 37 views
3

我正在做一個實踐的國際象棋應用程序和東西扔我離開。我的廣場編號爲1-64,第一行保持1至8,下一個保持9至16,依此類推。每次玩家嘗試移動一塊,我的程序會根據規則檢查目標方格是否合法。整數被錯誤解析爲字符串

對於我的王我有這樣一行:

else if (startID >= 58 && startID <= 63){ // bottom row 
       if (endID == startID - 7 || endID == startID - 8 || endID == startID - 9 || endID == startID - 1 || endID == startID + 1) return true; 
      } 

基本上,如果國王是最後一行(而不是角方)上,檢查目標方是相鄰的廣場。然而,所有的人,除了這部分,檢查工作,如果目標方是直接在右邊:

endID == startID + 1 

我已經有計劃鬥爭的其他部分使用,直到我添加了一個「parseInt函數比較報表( )'在有問題的變量前面。有沒有辦法確保變量總是一個整數?

+0

是的,使用'parseInt(startID,10)' – mplungjan

+0

不,JavaScript不使用類型。但是,爲什麼不使用嵌套數組維護職位? – sjngm

+0

你在哪裏/最初如何獲得'startID'和'endID'的這些值?從HTML屬性? – Teemu

回答

0

你可以嘗試以下

var myStringNum = "1"; 
if (myStringNum === parseInt(myStringNum, 10) && myStringNum !== NaN){ 
    console.log('ok'); // does not print anything 
} 

var myNormalNum = 1; 
if (myNormalNum === parseInt(myNormalNum, 10) && myNormalNum !== NaN){ 
    console.log('ok'); // prints ok 
} 

訣竅是使用 '===' 操作符。

這是jsfiddle example

+0

當我用===替換==的所有實例時,我的程序似乎不再工作,也許是因爲我有parseInt()參與了一些比較 – MarksCode

+0

@ user3509099在進行任何比較之前,請確保您轉換您使用的變量,以一個整數使用方法parseInt(myVar,10);. –