2014-09-05 76 views
0

問題是,我不知道爲什麼這段代碼不起作用。我到處搜索!
此代碼的作用是從數字框中獲取信息,然後在用戶輸入文本(錯誤)時顯示消息,並在用戶輸入數字時顯示成功消息。
HTML - >If/Else and typeof problems

<input type="number" id="number"> 
<button onclick="makeTrack()">Make Track</button> 
<div><div> 

JS - >問題出在哪裏開始!

function makeTrack() { 
    var e = document.getElementById("number").value; 
    if(typeof e === "number";) { 
     alert("It works!"); 
    } else if(typeof e === "string") { 
     alert("Please input a number!"); 
    } 
} 
+0

您從元素中獲取的所有值都是字符串類型。你可能想檢查'isNaN'並採取相應的行動 – elclanrs 2014-09-05 22:26:44

回答

4
document.getElementById("number").value 

所有元素的value將始終是一個字符串; JS不會試圖智取你,並猜測它是否是數字(這將是災難性的!)。先嚐試解析它,就像這樣:

function makeTrack() { 
    var e = parseInt(document.getElementById("number").value, 10); 
    if(!isNaN(e)) { 
     alert("It works!"); 
    } else { 
     alert("Please input a number!"); 
    } 
} 

注意,這將解釋的"12345 this is a string"輸入爲12345。如果這是不可取的,請嘗試如下所示:

var e = document.getElementById("number").value; 
if (/^[0-9]+$/.test(e)) { 
    // good 
    e = parseInt(e, 10); // make sure to still convert it to a number! 
} 
+0

雖然你的答案的第一部分是正確的,但僅僅檢查'isNaN'是不夠的。在這裏看到更多關於數字測試在javascript中的信息:http://stackoverflow.com/questions/18082/validate-decimal-numbers-in-javascript-isnumeric – 2014-09-05 22:39:26

+0

@TravisJ謝謝;我編輯了我的帖子。 – Doorknob 2014-09-05 22:44:55

+0

它工作得很好,它的問題是:它不alert(),如果它不是一個數字(一旦你按下按鈕)。順便說一句,這還是非常有用的,謝謝。 – 2014-09-06 23:01:02