2012-04-30 53 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

好,我沒有得到對代碼進行測試的時間,但它看起來像你的JavaScript正試圖在用戶輸入一個值之前訪問表單元素? (意思是他們沒有定義)。

需要下載jQuery來做到這一點:

你可以圍繞你的JavaScript代碼$(document).ready(function(){ //your code {);

如何檢測NaN的

  1. 原因已加載的HTML元素(有時HTML加載後javascript)
  2. 值是不確定的?
  3. 您是否除零?
  4. JavaScript有http://www.w3schools.com/jsref/jsref_isnan.asp
+0

那我該怎麼辦? – user1365945

+0

upvote我的答案,我會告訴你!大聲笑只是在開玩笑,我會看看(但真的upvote) – Jack

+0

theres那裏的價值雖然? – 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); 
} 

你是依靠用戶輸入正確輸入的號碼。您應該在分析之前驗證輸入是使用RegEx的數字。

http://jsfiddle.net/rMgeB/

+0

Regex是一個過於複雜的解決方案來驗證數字,因爲有許多不同的有效方式可以輸入數字。解析它會更好,並檢查數字「isFinite」。 –

+0

'/ \ d /'是複雜的嗎? – jbabey

0

它意味着 「不是一個數」(NaN)。如果「薪水」字段或「requiredamount」字段中包含一些非數字值,則會發生這種情況。舉例來說,如果你的值爲「100」和「Blah」,用於計算a的parseFloat()將返回數字100,而b的parseFloat()將返回NaN,因爲「Blah」沒有數字表示。隨後,當您嘗試在警報框中添加100和NaN時,您將看到您所看到的行爲。

您可以雙擊使用isNaN()函數檢查這些值:

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

。希望清除的東西了。

編輯:

什麼是最有可能的情況是,你的輸入中有一個$。parseFloat("$100") == NaNparseFloat("100") == 100因此您需要首先去掉代碼中的任何前導美元符號。

0

試試這個:

http://jsfiddle.net/LEX84/

如果選擇了單選按鈕,我沒有添加測試。如果沒有選擇單選按鈕,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); 
}