网页版简易计算器

雨点打透心脏的1/2处 2024-04-18 13:35 156阅读 0赞

运行效果

在这里插入图片描述
运行:直接将下面的代码放到任意文本文件中,文件后缀名改为.html,然后用任意浏览器打开即可。

实现思路以及代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>网页版的简易计算器</title>
  6. <!--使用js完成,之后可用:jquery-->
  7. <!-
  8. -->
  9. <style>
  10. /*设置input的宽度和高度*/
  11. input{
  12. width: 396px;
  13. height: 50px;
  14. font-size: 30px;
  15. }
  16. /*表格的行文本左右居中*/
  17. tr{
  18. /*text-align*/
  19. text-align: center;
  20. }
  21. /*设置单元格的内容宽度和高度以及字体大小*/
  22. td{
  23. width: 100px;
  24. height: 119px;
  25. font-size:30px;
  26. }
  27. /*伪类选择器:hover*/
  28. td:hover{
  29. /*指定背景色*/
  30. background-color: greenyellow;
  31. /*cursor:pointer
  32. * 鼠标经过的时候,变成小手
  33. */
  34. cursor:pointer ;
  35. }
  36. </style>
  37. </head>
  38. <body>
  39. <!--
  40. cellspacing:单元边沿和单元格之间的空间
  41. cellpadding:单元格和单元格之间的空间
  42. -->
  43. <!--在input上面写一个div: 指定这个当前系统时间-->
  44. <!--禁用文本框的输入功能:disabled:disabled-->
  45. <center><input type="text" value="0" id="show" disabled="disabled" /></center>
  46. <table border="1px" cellspacing="0" cellpadding="2" align="center" width="400px"
  47. height="600px">
  48. <tr>
  49. <td id="clear">C</td>
  50. <td id="del">退格</td>
  51. <td>%</td>
  52. <td class="operator">/</td>
  53. </tr>
  54. <tr>
  55. <td class="num">7</td>
  56. <td class="num">8</td>
  57. <td class="num">9</td>
  58. <td class="operator">*</td>
  59. </tr>
  60. <tr>
  61. <td class="num">4</td>
  62. <td class="num">5</td>
  63. <td class="num">6</td>
  64. <td class="operator">-</td>
  65. </tr>
  66. <tr>
  67. <td class="num">1</td>
  68. <td class="num">2</td>
  69. <td class="num">3</td>
  70. <td class="operator">+</td>
  71. </tr>
  72. <tr>
  73. <td colspan="2" class="num">0</td>
  74. <td class="num">.</td>
  75. <td id="result">=</td>
  76. </tr>
  77. </table>
  78. </body>
  79. <script>
  80. /**
  81. * -
  82. 1.页面布局
  83. 要么使用div+css,要么table布局
  84. table布局:5行4列的表格
  85. div+css布局:大的div 嵌套两个字div(输入框的和键盘)
  86. 2.逻辑处理
  87. 2.1 将数字键和小数点看成一类:clas="num"
  88. 2.2 将运算符看成一类:class="operator"
  89. 2.3 将清除键,退格键,=(等号),显示框,单独设置id属性
  90. 2.4 获取显示框,清除键,=号,推格键所在的标签对象
  91. 2.5 获取数字键所在的对象并设置点击事件
  92. 2.6 获取运算符所在的对象并设置点击事件
  93. */
  94. //获取显示框所在的标签对象
  95. var showResult = document.getElementById("show") ;
  96. //获取清除键所在的标签对象
  97. var clear = document.getElementById("clear") ;
  98. //获取退格键所在的标签对象
  99. var del = document.getElementById("del") ;
  100. //获取等号所在的对象
  101. var result = document.getElementById("result") ;
  102. //定义三个变量,分别保存第一个数,第二个数以及运算符
  103. //第一个数
  104. var numValue1 = "" ;
  105. //第二个数
  106. var numValue2 = "" ;
  107. //操作符
  108. var oper ="" ;
  109. //获取数字键,包含小数点,并设置点击事件
  110. var nums = document.getElementsByClassName("num") ;
  111. //遍历数字,分别设置点击事件
  112. for(var i = 0 ; i< nums.length ; i++){
  113. //设置点击事件:使用匿名函数
  114. nums[i].onclick = function(){
  115. //小数点的问题:只能出现一个:
  116. /**
  117. * 如果这个this.innerTest==.
  118. * //小数点只能出现一个
  119. * 否则:
  120. * 不是小数点,就属于整数运算
  121. * numValue1 += this.innerText;
  122. showResult.value = numValue1*1 ; //去掉首尾无效0
  123. */
  124. //测试
  125. // alert("获取到了每一个数字对象") ;
  126. //将点击的数字显示到文本框上
  127. //将nums[i]--->看成一个this:代表当前数字键对象的内存地址值
  128. //var text = this.innerText ; //普通文本
  129. //测试
  130. // alert(tesxt) ;
  131. //改变显示框对象的value属性
  132. //showResult.value = text;
  133. //问题1:目前:用户输入第一个数只能是一位数的
  134. //将数字内容赋值给第一个数,然后将第一个数展示到文本框上
  135. // numValue1 = this.innerText ;
  136. numValue1 += this.innerText;
  137. // showResult.value = numValue1*1 ; //去掉首尾无效0
  138. showResult.value = numValue1 ; //去掉首尾无效0
  139. //问题2:小数点的问题(小数点只能出现一个)
  140. }
  141. }
  142. //获取运算符所在的对象并设置点击事件
  143. var operators = document.getElementsByClassName("operator") ;
  144. //遍历操作符,设置点击事件
  145. for(var i = 0 ; i < operators.length ; i++){
  146. //设置点击
  147. operators[i].onclick = function(){
  148. /**
  149. * 判断numValue2的值是否为空:
  150. * 如果是numValue2==""
  151. * 如果numValue2不是空字符串
  152. * 用户可能点击等号或者运算符
  153. */
  154. if(numValue2==""){
  155. numValue2 = numValue1 ;
  156. numValue1 = "" ;
  157. //保存操作符
  158. oper = this.innerText ;
  159. }else{
  160. //用户要么点击=号要么进行四则运算
  161. //问题:应该将计算的结果赋值numValue2,清空numvalue1
  162. if(numValue1!=""){
  163. resultFn() ;
  164. }
  165. //保留操作符
  166. oper = this.innerText ;
  167. }
  168. //测试
  169. //alert("运算符获取到了") ;
  170. //做运算 :思考如何做运算,最终处理
  171. //将第二个数赋值第一个数,然后将第一个数清空,等待接收用户下一次输入的数据
  172. /* numValue2 = numValue1 ;
  173. numValue1 = "" ;
  174. //保存操作符
  175. oper = this.innerText ;*/
  176. }
  177. }
  178. //关于其他的操作:清除键
  179. //设置清除键的点击事件
  180. clear.onclick = function(){
  181. //将第一个数,第二个数以及运算符都情况掉
  182. //显示框显示默认值0
  183. numValue1 = "" ;
  184. numValue2 = "" ;
  185. oper = "" ;
  186. showResult.value = "0" ;
  187. }
  188. //删除键的逻辑,设置点击事件
  189. del.onclick = function(){
  190. // alert("abc") ;
  191. //可以用到String :substring()截取功能
  192. if(numValue1.length!=1){
  193. //进行截取:从0索引开始截取到当前numValue1.length-1处的位置结束,将其值
  194. //赋值给numValue1
  195. //场景:删除剩余一个数字即可
  196. numValue1 = numValue1.substring(0,numValue1.length-1) ;
  197. //alert(numValue1) ;
  198. //将numValue1显示文本框上
  199. // showResult.value = numValue1 *1 ; //去掉首位无效0
  200. showResult.value = numValue1 ; //
  201. }
  202. // else{
  203. // //自己处理
  204. //将第一个数,第二个数,运算符清空掉
  205. // }
  206. }
  207. //给等号添加点击事件,做四则运算
  208. result.onclick = function(){
  209. //抽取出一个方法
  210. resultFn() ;
  211. }
  212. //具体做四则运算的方法
  213. function resultFn(){
  214. //定义运算的两个数据: one ,two
  215. //数据类型转换
  216. var one = new Number(numValue2) ;//实际是第二个数
  217. var two = new Number(numValue1) ;//实际第一个数
  218. //保存计算结果
  219. var r = null ;
  220. //根据运算符进行判断,switch语句
  221. switch(oper){
  222. case "+":
  223. r = one + two ;
  224. break ;
  225. case "-":
  226. r = one - two ;
  227. break;
  228. case "*":
  229. r = one * two ;
  230. break ;
  231. case "/":
  232. //除数不能为0
  233. //判断
  234. /* if(two==0){
  235. //将数据情况掉
  236. //并且弹框提示;除数不能为0
  237. r = 0
  238. }else{
  239. one /two ;
  240. }*/
  241. r = one /two ;
  242. break ;
  243. }
  244. //将计算结果展示到显示框上
  245. // showResult.value = r ;
  246. //将计算的结果进行保留小数点的有戏位
  247. // numValue2 = r ;
  248. numValue2 = new Number(r).toFixed(6) ;
  249. numValue1 = "" ; //numValue1清空了
  250. showResult.value = numValue2*1; // numValue2*1
  251. //问题1 :1.2 * 3 = 3.599999996
  252. //问题2:去掉首尾无效0 :parseFloat()
  253. //问题3:在四则元素:判断用户如果是点击等号或者点击继续运算,每一次都将第一个数清空掉了,
  254. //判断第一个数是否为空
  255. //问题4:小数点问题:小数点只能出现一个
  256. //四则运算的问题:
  257. /**
  258. * 用户输入两个数据目前是直接处理结果,那么如何判断用户是要点击=号还是继续进行四则运算?
  259. * 在运算符点击监听事件中去坐
  260. * 判断numValue2的值是否为空:
  261. * 如果是numValue2==""
  262. * 如果numValue2不是空字符串
  263. * 用户可能点击等号或者运算符
  264. *
  265. */
  266. }
  267. </script>
  268. </html>

发表评论

表情:
评论列表 (有 0 条评论,156人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JS实现简易网页计算器

    js实现简易计算器。计算器的布局不像表格那么公正对称,所以布局这块相对比较繁琐,但是也可以通过这来练习一下CSS。 一、实现功能 1. 完成计算器的加减乘除的基本计算功能