2016-06-28 2 views
1

私はtry、catch、throw iエラーでこの問題を抱えています。しかし、結果は得点方法です。これがコードです。フォームフィールドに5より大きい数字を入力すると、あまりにも高い値を投げて表示されます。そして、5より小さい数字を入力すると、低すぎるのではなく高すぎると表示されます。実際には、他のif条件が表示されません。を除いて。空と高すぎます。誰かがそのような異常に説明できますか?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ではjavascriptからの応答がありません。

何が話しているのか理解できる人はいますか?実際に自分でコードを実行し、混乱している場所を教えてください。

+2

'のx == NaN'は、使用'ますisNaN() ' – csharpfolk

+0

おかげで動作しません。しかし、他の条件については、もし<5、あまりにも低すぎる、それはあまりにも高いスローされます – pedroyanky

+0

私はこの機能を試して、それは私のために働く、あなたは '試しの前に' console.log(x)それはあなたのために書いてくれるでしょう、あなたは普通の形式の ''フォーム要素を読んでいますか? – csharpfolk

答えて

0

コンソールにデバッグしよう:

NaN === NaN 

ワンダー:)第二に、あなたの間違い - あなたがXを変換する必要がありますINT:

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

しかし彼はすでに 'x = Number(x)'と言っています。 –

0

Nanの代わりにisNan()を使用する必要があります。 例にここhere ...

、余分なコンテキストを参照してください。 Why is IsNaN(x) different from x == NaN where x = NaN

+0

しかし、これは彼が説明している動作を説明していません。 –

関連する問題