2016-06-28 53 views
1

我有這個問題的嘗試,趕上並拋出我的錯誤。但是得到的結果是標記的方式。這是代碼。當我輸入大於5的數字進入表單域時,不會顯示太高的數字。當我輸入小於5的數字時,它顯示得太高,而不是太低。事實上,如果條件不顯示,大多數其他條件。除。空虛而過高。有人可以解釋這種反常現象嗎?JavaScript拋出和捕獲錯誤不顯示預期的結果

function myFunction() { 
    var x, message; 

    message = document.getElementById('para'); 
    message.innerHTML = ''; 
    x = document.getElementById('formField').value; 

    try { 
    if (x == "") throw 'empty'; 

    if (x == NaN) throw 'not a number'; 

    x = Number(x); 

    if (x < 5) throw 'too low'; 

    if (x > 5) throw 'too high'; 

    } 
    catch(err){ 
    message.innerHTML = 'input is ' + err; 
    } 
} 

你們很多人似乎都不瞭解我的問題,這裏的代碼是從W3schools直接複製和粘貼的。但不能正常工作。當來自輸入的值匹配if語句時,各種if語句應該會引發某些錯誤。而是它給出了一個不相關的結果。比如當我輸入2個數字時,而不是投入太低,我輸入的輸入太高。當我輸入超過5的數字時,它不會引發錯誤,並且對於NaN沒有響應。

有沒有人可以理解我在說什麼?我認爲你應該自己運行代碼,並請教我在哪裏混淆。

+2

'X == NaN'將無法正常工作使用'isNaN()' – csharpfolk

+0

感謝。但其他條件如果<5,而不是太低,它會引起太高 – pedroyanky

+0

10我試過這個函數,它適用於我,你可以在'try'前添加'console.log(x)'併發布什麼它會爲你寫,而你正在閱讀窗體正常的''表單元素? – csharpfolk

回答

0

嘗試在控制檯調試:

NaN === NaN 

和驚歎:)其次,你的錯誤 - 你必須將x轉換到INT:

x = parseInt(document.getElementById('formField').value); 
+0

但他已經在說'x = Number(x)'。 – 2016-06-28 11:08:37