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

为什么我输入1+2=12?

<!DOCTYPE html>

<html>

 <head>

  <title> 事件</title>  

  <script type="text/javascript">

   function count(){

        var result;

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

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

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

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

    //获取选择框的值

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

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

        switch(a)

        {

            case"+":

                result=x+y;break;

            case"-":

                result=x-y;break;

            case"*":

                result=x*y;break;

            case"/":

                result=x/y;break;

        }

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

    }

   

    //设置结果输入框的值 

    

 

  </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' value="" />   

 </body>

</html>


提问者:qq_一生一刹那_0 2015-11-13 17:09

个回答

  • 李晓健
    2015-11-13 17:46:21

    //获取第一个输入框的值
    var x=document.getElementById("txt1").value;
    //获取第二个输入框的值
    var y=document.getElementById("txt2").value;

    改成如下

    //获取第一个输入框的值
    var x=document.getElementById("txt1").value-0;
    //获取第二个输入框的值
    var y=document.getElementById("txt2").value-0;

    通过-0 可以将 x 或 y 转成数字

    因为不知道输入的是整数还是小数,所以无法确定用 parseInt  还是 parseFloat 

    程序算小数可能会出问题  比喻 0.6+0.3  = 0.8999999999999999,所以出现小数时最好把小数转成整数来计算 比喻 (0.6*10+0.3*10)/10 = 0.9 

  • 荼酒
    2015-11-13 17:37:44

    对啊,你的1+2他就解析成了 “1”+“2”=“12”

  • sixGod
    2015-11-13 17:24:01

    +号在JS中还有一个功能是字符串拼接,所以你在操作x,y 时,一定要先把x,y转成数字类型的,用x = parseInt(x);后再试试