问答详情
源自:6-11 编程练习

计算的结果是NaN 是怎么回事 请人指教

<!DOCTYPE html>

<html>

 <head>

  <title> 事件</title>  

  <script type="text/javascript">

   function count(){

    var txt1=document.getElementById("txt1").value;   

    //获取第一个输入框的值

    var txt2=document.getElementById("txt2").value;

//获取第二个输入框的值

    var select1=document.getElementById("select").value;

//获取选择框的值

    var x=""

    switch(select1)

    {

        case "+":

         x = parseInt("txt1")+parseInt("txt2");

        break;

        case "-":

         x = parseInt("txt1")-parseInt("txt2");

        break;

        case "*":

          x = parseInt("txt1")*parseInt("txt2");

        break;

        case "/":

          x = parseInt("txt1")/parseInt("txt2");

        break;

    }

//获取通过下拉框来选择的值来改变加减乘除的运算法则

    document.getElementById("fruit").value = x;

    //设置结果输入框的值 

    

   }

  </script> 

 </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' value=' = ' onclick="count()"/> <!--通过 = 按钮来调用创建的函数,得到结果--> 

   <input type='text' id='fruit' />   

 </body>

</html>


提问者:慢慢走0 2016-01-11 17:17

个回答

  • yes居然被占用
    2016-01-11 17:26:15
    已采纳

    因为txt1已经是String类型的值了,parseInt(txt1),这样写才可以进行转换,下面是改好的代码,你可以看一下


    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">

    <title>Insert title here</title>

    </head>

    <script type="text/javascript">

    function count() {

    var txt1 = document.getElementById("txt1").value;

    //获取第一个输入框的值

    var txt2 = document.getElementById("txt2").value;

    //获取第二个输入框的值

    var select1 = document.getElementById("select").value;

    //获取选择框的值

    var x = "";

    switch (select1) {

    case "+":

    x = parseInt(txt1) + parseInt(txt2);

    break;

    case "-":

    x = parseInt(txt1) - parseInt(txt2);

    break;

    case "*":

    x = parseInt(txt1) * parseInt(txt2);

    break;

    case "/":

    x = parseInt(txt1) / parseInt(txt2);

    break;

    }

    //获取通过下拉框来选择的值来改变加减乘除的运算法则

    document.getElementById("fruit").value = x;

    //设置结果输入框的值 


    }

    </script>

    <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' value=' = ' onclick="count()" />

    <!--通过 = 按钮来调用创建的函数,得到结果-->

    <input type='text' id='fruit' />

    </body>

    </html>


  • 翼梦设计工作室
    2016-08-22 22:32:17

    谢谢,同样问题解决了。正确:parseInt(参数),错误:parseInt(“参数”),不用加双引号“”的缘故

  • 慢慢走0
    2016-01-11 17:31:48

    是因为 txt1本身就是字符串  所以不要加""(引号)吗

  • Its_forever
    2016-01-11 17:31:45

    正如楼上说的,你这样parseInt("txt1")得到的不是数字,当某个运算符不是数字,那么结果为 NaN。