2017-03-25 27 views
1

這就是我試圖檢查:如果輸入整數使用JavaScript

<html> 
<head> 
<script> 
function myFunction() { 
var num = document.getElementById("num").value; 
if (Number.isInteger(num)) { 
document.getElementById("show").innerHTML = "Number is integer"; 
} else { 
document.getElementById("show").innerHTML = "Number is not integer"; 
} 
</script> 
</head> 
<body> 
<input id = "num"></input> 
<button onclick = "myFunction()">Submit</button> 
<p id = "show">Result Appears Here</p> 
</body> 
</html> 

這裏的問題是,我得到「數不整」,即使數量爲整數的所有時間,代碼應該檢查輸入是否爲整數或不提前致謝

回答

2

#num元素的value作爲string返回,如您在控制檯中所看到的。只需使用+符號將其還原爲number即可。

另一件事 - 用每個函數調用覆蓋#num元素的innerHTML屬性。您必須在else語句中插入第二個動作document.getElementById("show").innerHTML = "Number is not integer"以避免覆蓋。

function myFunction() { 
 
    var num = document.getElementById("num").value; 
 
    console.log(typeof num); 
 

 
    if (Number.isInteger(+num)) { 
 
    document.getElementById("show").innerHTML = "Number is integer"; 
 
    } else { 
 
    document.getElementById("show").innerHTML = "Number is not integer"; 
 
    } 
 
}
<input id="num"></input> 
 
<button onclick="myFunction()">Submit</button> 
 
<p id="show">Result Appears Here</p>

還有另一種方式來檢查,如果一個數是整數,使用modulo

function myFunction(num) { 
 
    num % 1 ? console.log("Not Integer") : console.log("Integer"); 
 
} 
 

 
myFunction(5); 
 
myFunction(5.5);

+0

我完全忘了你的幫助,「其他」感謝<: – AmirWG

+0

@AmirWG還檢查第二種方式如何更快獲得正確的結果。 (: –

+1

非常感謝你,你是一個善良的用戶(: – AmirWG

0

嗯怎麼樣試試這個:

if(!isNaN(num)){ 
    if(Number.isInteger(num){ 
     //your code 
    } else { 
     //your code 
    } 
} 
+0

爲什麼要打擾* isNaN *測試? 'Number.isInteger(NaN)'返回false,因此NaN單獨測試不會添加任何內容。 – RobG

0

建議的只是一點點:學習如何正確地縮進代碼:

function myFunction() { 
    var num = document.getElementById("num").value; 
    if (Number.isInteger(num)) { 
     document.getElementById("show").innerHTML = "Number is integer"; 
    } 
    document.getElementById("show").innerHTML = "Number is not integer"; 
} 

如果你這樣做,你很容易就會看到最後一行會替換你在中輸入的內容。數字不是整數

您需要一個else來完成這項工作。

此外,無論是從文本框中出來的是一個字符串,所以你必須先通過parseInt運行它。

這可能會更好地工作:

function myFunction() { 
    var num = parseInt(document.getElementById("num").value,10); 
    if (Number.isInteger(num)) { 
     document.getElementById("show").innerHTML = "Number is integer"; 
    } 
    else document.getElementById("show").innerHTML = "Number is not integer"; 
} 

另外:

  • input無效元素,這意味着它沒有關閉標籤。
  • 對於HTML屬性,您確實不應該在=符號周圍留下空格,因爲某些瀏覽器誤解了這一點。例如:id="something"