0

只是想知道是否有人能弄清楚为什么我会继续获得例如。3+3=33 而不是 6。

其余的编码适用于除法,并乘以不断填塞且无法得出正确答案的加法。如果可以,请提供帮助。

  1. 这是我的代码:

    <html>
     <head>
      <title>Practical Task 8 </title>
     </head>
    
        <body>
    
         <button onclick="myFunction()">Press & Enter First Digit & Second Digit</button>
    
    
         <script type="TEXT/JavaScript">
    
          function myFunction()
                {
    
            var x=prompt("Please enter first number","0");
            var y=prompt("Please enter second number","0");
    
                var sum = x;
                var sum2 = y;
                var n = (x * y);
                var n2 = (x / y);
                var n3 = (x + y);
    
           document.write(sum + " + " + sum2 + " = " + n3);
    
           document.write("<BR>" + sum + " * " + sum2 + " = " + n);
    
           document.write("<BR>" + sum + " / " + sum2 + " = " + n2);
    
               }
    
    
    
    
            </script>
    
    
    
        </body>
    
    
    </html>
    
4

2 回答 2

2

因为您的代码正在添加字符串。

用户输入始终是字符串。

您需要将字符串值解析为 int base 10 parseInt(x, 10)parseInt(y, 10)

于 2013-09-05T03:36:22.987 回答
2

您正在执行字符串连接,而不是整数加法。

首先使用parseInt

x = parseInt( x, 10 );
y = parseInt( y, 10 );

MDN 建议始终指定基数(10部分)以避免出现问题,例如,如果用户在数字前面加上0(它将被解析为八进制),或者不同的浏览器有不同的默认基数(wtf,我知道!) .

你必须这样做,因为输出prompt总是 a string,即使它是一个数字(例如"10""0123"),你需要告诉 JavaScript 将数据解释为一个数字(parseInt如果它是一个整数(整数)则使用,或者使用parseFloatif您将接受带小数位的数字)。令人困惑的是,+运算符适用于stringnumber类型,它根据其操作数的类型执行连接(即像胶水一样将字符串连接在一起)或加法。

于 2013-09-05T03:36:50.973 回答