javascript实现的简单计算出错,结果是NaN
本文介绍了javascript实现的简单计算出错,结果是NaN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
新手请教,代码很简单,但结果是NaN,我不能调试出哪里出问题。
1、哪里出问题?
2、能告知如何调适最好了(我用chrome的自带调试)?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> 事件</title>
</head>
<body>
<input type='text' id='txt1' />
<select id='select'>
<option value='+'>+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type='text' id='txt2' />
<input type='button' id="act" value=' = ' /> <!--通过 = 按钮来调用创建的函数,得到结果-->
<input type='text' id='fruit' />
<script type="text/javascript">
//获取第一个输入框的值
var txt1 =parseInt(document.getElementById("txt1").value);
//获取第二个输入框的值
var txt2 =parseInt(document.getElementById("txt2").value);
//获取选择框的值
var selected =document.getElementById("select").value;
//获取通过下拉框来选择的值来改变加减乘除的运算法则
var answer;
switch(selected){
case "+":
answer=txt1 + txt2;
break;
case "-":
answer=txt1 - txt2;
break;
case "*":
answer=txt1*txt2;
break;
case "/":
answer=txt1/txt2;
break;
}
//绑定事件,设置结果输入框的值
var btn=document.getElementById("act");
btn.addEventListener("click",function(e){
document.getElementById("fruit").value=answer;
},false)
</script>
</body>
</html>
解决方案
1.你的js代码在输入值之前就已经执行了,而这时候txt1和txt2取到的NaN。计算的answer也就是NaN。
把代码放进监听的click事件去就可以,也可以写个方法封装一下。
//绑定事件,设置结果输入框的值
var btn=document.getElementById("act");
btn.addEventListener("click",function(e){
//获取第一个输入框的值
var txt1 =parseInt(document.getElementById("txt1").value,10);//十进制
//获取第二个输入框的值
var txt2 =parseInt(document.getElementById("txt2").value,10);//十进制
//获取选择框的值
var selected =document.getElementById("select").value;
//获取通过下拉框来选择的值来改变加减乘除的运算法则
var answer;
switch(selected){
case "+":
answer=txt1 + txt2;
break;
case "-":
answer=txt1 - txt2;
break;
case "*":
answer=txt1*txt2;
break;
case "/":
answer=txt1/txt2;
break;
}
document.getElementById("fruit").value=answer;
},false);
2.打开调试器,打断点,一步一步调试,查看获取的值是不是正确的。再对代码进行修改。
这篇关于javascript实现的简单计算出错,结果是NaN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文