我这个代码,为什么加法运算不是2数相加?找不到哪里写错了?

来源:6-11 编程练习

请叫我_灰灰

2016-02-01 22:19

<!DOCTYPE html>

<html>

 <head>

  <title> 事件</title>  

  <script type="text/javascript">

   function count(){

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

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

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

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

var p="";

    //获取选择框的值

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

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

    //设置结果输入框的值 

   switch(px)

   {

       case "+":

           p = p1 +p2;

           break;

       case "-":

           p = p1 -p2;

            break;

       case "*":

           p = p1*p2;

            break;

       case "/":

           p = p1/p2;

            break;

   }

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

   

   }

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

   <input type='text' id='fruit' onclick="count()" />   

 </body>

</html>


写回答 关注

3回答

  • 断了的弦外之音
    2016-02-01 22:55:28
    已采纳

    你的p1和p2接收到的是String类型的值 你用alert(typeof(p1))试一下就知道了   要用parseInt转型

    请叫我_灰灰

    非常感谢!

    2016-02-02 09:31:26

    共 3 条回复 >

  • 请叫我_灰灰
    2016-02-02 09:31:52

    我还有点不明白,为什么就是第一个case是字符串,其他的case就是number类型呢?

    在case“-”后面加了alert(typeof(p)); 是弹出number类型的 
    但是为什么会这样?

  • 请叫我_灰灰
    2016-02-02 09:31:46

    我还有点不明白,为什么就是第一个case是字符串,其他的case就是number类型呢?

    在case“-”后面加了alert(typeof(p)); 是弹出number类型的 
    但是为什么会这样?

    断了的弦外之...

    关于为什么会是字符串可能问题出在这里-->var p=""; 你的p是string类型,所以p=p1+p2的时候,右边的number类型的值被转换成了string类型,你先不给p赋初值试试看。其实p的类型我们不关心,只要p1和p2是number类型的,这样就能运算。

    2016-02-02 23:23:34

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468869 学习 · 22582 问题

查看课程

相似问题