javascript实现的简单计算出错,结果是NaN

查看:68
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆