0

私は 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>

必要な金額を給与に追加し、ダイアログ ボックスに表示される名前を取得しようとしています。

anwseRを知っている人はいますか?

4

4 に答える 4

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 );
}

数値として正しく入力するには、ユーザー入力に依存しています。解析する前に、RegExを使用して入力が数値であることを検証する必要があります。

http://jsfiddle.net/rMgeB/

于 2012-04-30T14:01:13.960 に答える
0

「数字ではない」(NaN)を意味します。これは、「salary」フィールドまたは「requiredamount」フィールドのいずれかに数値以外の値が含まれている場合に発生します。たとえば、値がそれぞれ「100」と「Blah」の場合、「Blah」には数値表現がないため、aの計算に使用されるparseFloat()は数値100を返し、bのparseFloat()はNaNを返します。その後、アラートボックスに100とNaNを追加しようとすると、表示されている動作が得られます。

isNaN()関数を使用して、これらの値を再確認できます。

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

それが物事をクリアすることを願っています。

編集:

最も可能性の高いケースは、入力に$が含まれていることです。parseFloat("$100") == NaN一方parseFloat("100") == 100、最初にコード内の先頭のドル記号を削除する必要があります。

于 2012-04-30T14:02:18.957 に答える
0

これを試して:

http://jsfiddle.net/LEX84/

ラジオボタンが選択されている場合、テストを追加しませんでした。ラジオボタンが選択されていない場合、NaNが結果になります。

ラジオボタンの取得はここからです:javascript選択されたラジオ

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 );
}
于 2012-04-30T14:03:09.873 に答える
0

NaN は非数を意味します。ゼロで除算するとき、または未定義の値を追加するときに発生する可能性があります。

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

コードをテストする時間はありませんが、ユーザーが値を入力する前に JavaScript がフォーム要素にアクセスしようとしているようです。(つまり、それらは未定義です)。

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

JavaScript コードを次のように囲むことができます。$(document).ready(function(){ //your code {);

NaN の原因を検出する方法

  1. html 要素が読み込まれている (javascript の後に html が読み込まれる場合があります)
  2. 値は未定義ですか?
  3. ゼロで割りますか?
  4. JavaScript にはhttp://www.w3schools.com/jsref/jsref_isnan.aspがあります
于 2012-04-30T13:57:29.110 に答える