Javascript添加错误消息

时间:2012-04-30 13:55:39

标签: javascript html

我是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?

4 个答案:

答案 0 :(得分:0)

NaN表示不是数字。除以零或添加未定义的值时可能会发生这种情况。

维基: http://en.wikipedia.org/wiki/NaN

好的,我没有时间测试你的代码,但看起来你的JavaScript试图在用户输入值之前访问表单元素? (意思是它们未定义)。

需要下载jQuery来执行此操作:

您可以在$(document).ready(function(){ //your code {);

中包围JavaScript代码

如何检测NaN的原因

  1. 是否已加载html元素(有时html会在javascript之后加载)
  2. 值是否未定义?
  3. 你除以零吗?
  4. JavaScript有http://www.w3schools.com/jsref/jsref_isnan.asp

答案 1 :(得分: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/

答案 2 :(得分:0)

表示“非数字”(NaN)。如果“salary”字段或“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因此您需要首先删除代码中的所有主要美元符号。

答案 3 :(得分: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 );
}