使用html+css+javaScript 完成计算器

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
可观测监控 Prometheus 版,每月50GB免费额度
简介: 使用html+css+javaScript 完成计算器

一、先用html与css搭建骨架

思路:

  1. 将计算器的数字按钮放进一个表格里,
  2. 再通过css修饰
  3. 然后对指定的数字按钮或功能按钮添加事件
  4. 将需要计算的式子放进一个字符串里,最后==通过全局方法eval( )计算==出来
html的骨架搭建
//这里的用一个 div 将内容包住, 然后再align="center" 将计算机居中
<div align="center">
    <div class="main_div">
        <div class="top_div">wswsjwq的计算器</div>
        <textarea id="main_div_area" cols="35px" rows="3px"></textarea>
        <table class="mian_div_table" cellpadding="0" cellspacing="10">
            <tr>
                <td class="cell_nub">7</td>
                <td class="cell_nub">8</td>
                <td class="cell_nub">9</td>
                <td class="cell_nub">+</td>
            </tr>
            <tr>
                <td class="cell_nub">4</td>
                <td class="cell_nub">5</td>
                <td class="cell_nub">6</td>
                <td class="cell_nub">-</td>
            </tr>
            <tr>
                <td class="cell_nub">1</td>
                <td class="cell_nub">2</td>
                <td class="cell_nub">3</td>
                <td class="cell_nub">*</td>
            </tr>
            <tr>
                <td class="cell_nub">0</td>
                //使用onclick="函数()" 添加点击事件
                <td onclick="clearArea()">C</td>
                <td onclick="sum()">=</td>
                <td class="cell_nub">/</td>
            </tr>
        </table>
    </div>
</div>

效果:
在这里插入图片描述

css点缀修饰
        <style type="text/css">
            .main_div {
                width: 500px;
                height: 350px;
                background-color: #F0F8FF;
            }
            .top_div {
                height: 50px;
                line-height: 50px;
                background-color: #DFE9F5;
                font-weight: bold;
                font-size: x-large;
                font-family: "宋体";
            }
            .mian_div_table {
                 width: 500px;
                 height: 150px;
            }
            .mian_div_table td {
                padding-left: 40px;
                font-size: 30px;
                background-color: #A9A9A9;
            }
            #main_div_area {
                font-size: xx-large;
            }
        </style>

效果:
在这里插入图片描述
最后的大头javaScript:

    <script type="text/javascript">
        // 获取到每个数字按键的document对象
        var Btn = document.getElementsByClassName("cell_nub");
        //获取文本域对象,***注意此处只能使用id来获取文本域对象***
        var areaObj = document.getElementById("main_div_area");
        //定义一个字符串来接收输入内容
        var Str = "";
        var arr = [];
        //给同一个类添加事件
        for (var i = 0; i < Btn.length; i++) {
          arr.push(i);
          arr.forEach((value) => {
            Btn[value].onclick = function () {
                //打印出按压结果以便观看
              console.log("按压值: "+Btn[value].innerHTML);
              //将值传给拼接字符串的方法add()
              add(Btn[value].innerHTML);
            };
          });
        }
        
        //字符串拼接方法
        function add(temp){
            console.log("拼接字符串方法执行");
            console.log(Str.charAt(Str.length-1));
            //如果此时的按压值是+-*/与上一个字符重复,就要覆盖上一次的符号
            if((Str.charAt(Str.length-1)=="+"||Str.charAt(Str.length-1)=="-"||Str.charAt(Str.length-1)=="*")&&(temp=="+"||temp=="-"||temp=="*"||temp=="/")){
                console.log("此时的按压值 :"+temp);
                //截取0到最后一个,不包括最后一个
                Str=Str.substring(0,Str.length-1);
                console.log("删除重复符号后"+Str);
                Str+=temp;
                console.log("添加后"+Str);
            }else{
                Str+=temp;
            }
            areaObj.value = Str;
            console.log("字符串Str="+Str);
        }
        //使用eval()求和的方法
        function sum(){
            console.log("求和方法执行");
            console.log("结果是: "+eval(Str));
            areaObj.value = eval(Str);
        }
        //清除的方法
        function clearArea(){
            console.log("清除方法执行");
            Str="";
            console.log("清除后"+Str);
            areaObj.value = Str;
        }
    </script>

==当我写javaScript时候遇到的问题;==

  1. 就是获取文本域的标签对象(也叫文本域的DOM对象)时候,我给那个文本域标签使用class命名,获取DOM对象时候,无法修改文本域里的内容

如图:
!在这里插入图片描述](https://img-bog.csdnimg.cn/337c4c6992f546a0b84a2c708af23e93)

在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/735d8acd535e4217afe31c91e6b24476.png)

点击数字按键并不能将按键的内容放到文本域里

  1. 在我想将获取的计算式子放到文本域时候老想着使用
areaObj.innerHTML = "我是获取的按钮值";

这样无法获取到,因为文本域标签时功能性标签,并不是想div那样的包裹标签,
所以应该用value

areaObj.value = "我是获取的按钮值";
  1. 还要再注意一下给一类标签添加事件的代码块
            var arr = [];
            //用for循环给获取的一组类标签加事件
        for (var i = 0; i < Btn.length; i++) {
          arr.push(i);
          arr.forEach((value) => {
            Btn[value].onclick = function () {
                //打印出按压结果以便观看
              console.log("按压值: "+Btn[value].innerHTML);
              //将值传给拼接字符串的方法add()
              add(Btn[value].innerHTML);
            };
          });
        }

如果foreach忘记的兄弟们 [点这里]

  1. 还有一点

如果要在javaScript里获取对象, 那就要写在body的后面

这是由于脚本语言是从上向下加载顺序有关

若有错误, 及时提出,作者秒回

相关文章
|
5天前
纸屑飘落生日蛋糕场景js+css3动画特效
纸屑飘落生日蛋糕CSS3动画特效是一款js+css3制作的全屏纸屑飘落,生日蛋糕点亮庆祝动画特效。
17 3
|
5天前
|
Web App开发 移动开发 HTML5
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码。画面中心是悬浮于空的梅花鹿,其四周由白色线段组成了一个6边形将中心的梅花鹿包裹其中。四周漂浮的白雪随着多边形的转动而同步旋转。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
22 2
|
15天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
31 7
|
15天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
27 6
|
15天前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
29 5
|
15天前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
22 5
|
21天前
|
JavaScript 前端开发
CSS3 动画和 JavaScript 动画的性能比较
具体的性能表现还会受到许多因素的影响,如动画的复杂程度、浏览器的性能、设备的硬件条件等。在实际应用中,需要根据具体情况选择合适的动画技术。
|
23天前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
优化CSS和JavaScript加载
|
25天前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
25天前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
110 1