我是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 :(得分:0)
NaN表示不是数字。除以零或添加未定义的值时可能会发生这种情况。
维基: http://en.wikipedia.org/wiki/NaN
好的,我没有时间测试你的代码,但看起来你的JavaScript试图在用户输入值之前访问表单元素? (意思是它们未定义)。
需要下载jQuery来执行此操作:
您可以在$(document).ready(function(){ //your code {);
如何检测NaN的原因
答案 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验证输入是否为数字。
答案 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") == NaN
而parseFloat("100") == 100
因此您需要首先删除代码中的所有主要美元符号。
答案 3 :(得分: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 );
}