2012-04-30 14 views
0

私はJavaScriptに新しいですし、次のエラーメッセージが何を意味するのか疑問に思った:Javascriptの追加エラーメッセージ

こんにちは_ _ NaNの

NaNは何を意味するのでしょうか?次のように

私のスクリプトは次のとおりです。

<script type="text/javascript"> 
function validateForm() 
{ 
var x=document.forms["myForm"]["name"].value; 
if (x==null || x=="") 
    { 
    alert("What Is Your Name?"); 
    return false; 
    } 
} 


function addNos(){ 
    var a, b, res; 
    a= parseFloat(document.myForm.salary.value); 
    b= parseFloat(document.myForm.requiredamount.value); 
    res = a+b; 
    window.alert("Hello" + a + b); 
} 

</script> 

    <form name="myForm" action="" onsubmit="return validateForm()" method="post"> 


<label>Your Name</label> <br /><br /><input name="name" type="text" /> 

<br /><br /> 
<label>Your Salary</label><br /><br /> 
<select name="salary"> 
    <option value="10000">10000</option> 
    <option value="20000">20000</option> 
    <option value="30000">30000</option> 
</select> 

<br /><br /> 
<label>Required Amount</label><br /><br /> 
<input name="requiredamount" type="radio" value="5000" /> 5000 
<input name="requiredamount" type="radio" value="10000" /> 10000 
<input name="requiredamount" type="radio" value="15000" /> 15000 
<input name="requiredamount" type="radio" value="20000" /> 20000 

<br /><br /> 

<input name="" type="submit" value="Get Quote" onclick="addNos()" /> 


</form> 

私は給料でrequiredamountを追加しても、ダイアログボックスに表示される名前を取得しようとしています。

誰もがanwseRを知っていますか?

+0

なぜJavaのタグ? –

答えて

0

NaNは数字ではありません。これは、ゼロで割るか、または未定義の値を追加するときに発生します。

ウィキ: http://en.wikipedia.org/wiki/NaN

[OK]を私はあなたのコードをテストするための時間を持っていませんでしたが、あなたのJavaScriptは、ユーザーが値を入力した前に、フォーム要素にアクセスしようとしているように見えますか? (意味は未定義です)。

これを行うにはjQueryをダウンロードする必要があります。

あなたがNaNの原因

  1. を検出する方法$(document).ready(function(){ //your code {);

    にJavaScriptコードを囲むことができ、時にはhtml要素ロード(持っていますhtmlはjavascriptの後に読み込まれます)

  2. 値は未定義ですか?
  3. 0で割っていますか?
  4. JavaScriptが
+0

どうすればいいですか? – user1365945

+0

upvote私の答えと私はあなたに教えてあげる!笑っちゃった冗談だよ(でも本当にupvote) – Jack

+0

そこには価値がある? – user1365945

0
function addNos(){ 
    var a, b, res; 
    a= parseFloat(document.myForm.salary.value); 
    b= parseFloat(document.myForm.requiredamount.value); 
    res = a+b; 
    window.alert("Hello" + a + b); 
} 

あなたはユーザー入力に依存しているhttp://www.w3schools.com/jsref/jsref_isnan.aspが正しく番号として入力する必要があります。解析する前にRegExを使用して入力が数字であることを検証する必要があります。

http://jsfiddle.net/rMgeB/

+0

正規表現は数字を入力するための非常に多くの異なる有効な方法があるので、数字を検証するための非常に複雑な解決策です。それを解析するほうがいいでしょう。数字が 'isFinite'であるかどうかチェックしてください。 –

+0

'/ \ d /'は複雑ですか? – jbabey

0

それは "非数"(NaNの)を意味します。これは、 "salary"フィールドまたは "requiredamount"フィールドの中に数値以外の値がある場合に発生します。例えば、値 "100"と "Blah"をrepsectivelyした場合、aを計算するために使用されるparseFloat()は数値100を返し、 "blah"は数値表現を持たないので、bのparseFloat()はNaNを返します。その後、アラートボックスに100とNaNを追加しようとすると、あなたは見ている動作を取得します。

あなたはますisNaN()関数を使用して、これらの値を再確認することができます:物事をクリアし

a = parseFloat(...); 
if (isNaN(a)) 
{ 
    alert("Sorry, you must enter a real number"); 
    return; 
} 

希望を。

EDIT:

最も可能性が高い場合は何があなたの入力がそれで$を持っているということです。parseFloat("$100") == NaNの場合はparseFloat("100") == 100となりますので、最初に先頭のドル記号を削除する必要があります。ラジオボタンが選択されている場合、私は、テストを追加しませんでした

http://jsfiddle.net/LEX84/

0

はこれを試してみてください。ラジオボタンが選択されていない場合、NaNが結果になります。ラジオボタンを取得

はこちらから:javascript selected radio

function validateForm() 
{ 
var x=document.forms["myForm"]["name"].value; 
if (x==null || x=="") 
    { 
    alert("What Is Your Name?"); 
    return false; 
    } 
} 

function getCheckedRadioId(name) { 
    var elements = document.getElementsByName(name); 

    for (var i=0, len=elements.length; i<len; ++i) 
     if (elements[i].checked) return elements[i].value; 
} 
function addNos(){ 
    var a, b, res; 
    a= parseFloat(document.myForm.salary[document.myForm.salary.selectedIndex].value); 
    alert(a); 
    b= parseFloat(getCheckedRadioId("requiredamount")); 
    res = a+b; 
    window.alert("Hello " + a + " " + b); 
} 
関連する問題