欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js简单计算器和一个深坑

程序员文章站 2022-03-06 13:11:59
...

今天用js写了一个简单的计算器,别的都还好说,遇到一个最大的坑应该是input输入的数字拿到之后竟然为string类型,type=”number”也不行!坑坑坑!!!

上代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>计算器</title>
  6. </head>
  7. <body>
  8. <input type="text" name="num1" id="num1" value="">
  9. <select name="ys" id="ys">
  10. <option value="+">+</option>
  11. <option value="-">-</option>
  12. <option value="*">*</option>
  13. <option value="/">/</option>
  14. <option value="%">%</option>
  15. </select>
  16. <input type="text" name="num2" id="num2" value="">
  17. <button onclick="js()">计算</button>
  18. <p id="res"></p>
  19. <script>
  20. function js() {
  21. var res = '',
  22. num1 = document.getElementById('num1').value,
  23. num2 = document.getElementById('num2').value,
  24. ysf = document.getElementById('ys').value,
  25. resObj = document.getElementById('res');
  26. console.log(num1);
  27. console.log(typeof (num1));
  28. if (num1.length < 1) {
  29. res += 'num1不能为空!';
  30. }
  31. if (num2.length < 1) {
  32. res += 'num2不能为空!'
  33. }
  34. num1 = parseFloat(num1);
  35. num2 = parseFloat(num2);
  36. if (isNaN(num1)) {
  37. res += 'num1不能为非数字!';
  38. }
  39. if (isNaN(num2)) {
  40. res += 'num2不能为非数字';
  41. }
  42. if (res.length == 0) {
  43. switch (ysf) {
  44. case '+':
  45. res = num1 + num2;
  46. break;
  47. case '-':
  48. res = num1 - num2;
  49. break;
  50. case '*':
  51. res = num1 * num2;
  52. break;
  53. case '/':
  54. if (num2 == 0) {
  55. res += '除数不能为零!';
  56. } else {
  57. res = num1 / num2;
  58. }
  59. break;
  60. case '%':
  61. if (num2 == 0) {
  62. res += '除数不能为零!';
  63. } else {
  64. res = num1 % num2;
  65. }
  66. break;
  67. }
  68. }
  69. resObj.innerText = res
  70. }
  71. </script>
  72. </body>
  73. </html>

js简单计算器和一个深坑