文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

原生JavaScript如何实现网页版计算器

2023-06-25 12:23

关注

这篇文章主要介绍了原生JavaScript如何实现网页版计算器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

原生JavaScript如何实现网页版计算器

首先是网页计算器的样式部分不想手写直接复制即可

<!DOCTYPE html><html lang="zh-CN"> <head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        * {            margin: 0;            padding: 0;            box-sizing: border-box;        }         .cal {            width: 420px;            margin: 100px auto;            background-color: #E6E6E6;             padding: 2px;            overflow: hidden;        }          .show {            position: relative;            width: 416px;            height: 120px;             font-size: 50px;            line-height: 50px;            font-weight: 700;        }         .show button {            display: none;             position: absolute;            top: -2px;            right: -2px;             width: 60px;            height: 40px;            line-height: 40px;            text-align: center;            border: transparent;            background-color: #E6E6E6;             font-size: 30px;            font-weight: 100;            cursor: pointer;        }         .show button:hover {            background-color: #e81123;            color: #f0f0f0        }         .res,        .left,        .right {            position: absolute;            bottom: 0;             height: 60px;            line-height: 60px;            padding: 0 3px;        }         .res {            right: 0;                         text-align: right;        }         .left {            display: none;            background-color: #E6E6E6;        }         .right {            display: none;            right: 0;            background-color: #E6E6E6;        }         .left:hover,        .right:hover {            color: #2e8eda;        }         .keyboard {            display: flex;            flex-wrap: wrap;            justify-content: center;        }           .btn {            display: flex;            justify-content: center;             width: 100px;            height: 60px;            line-height: 60px;            margin: 2px;             background-color: #f0f0f0;            border: transparent;             font-size: large;        }         .btn:hover {            background-color: #d6d6d6;        }         .digital {            background-color: #fafafa;            font-weight: 700;        }         .equal {            background-color: #8abae0;        }         .equal:hover {            background-color: #4599db;        }    </style></head> <body>     <div class="cal">        <div class="show">            <button class="close">×</button>            <div class="res">0</div>            <div class="left">&lt;</div>            <div class="right">&gt;</div>        </div>        <div class="keyboard">            <!-- 0 -->            <button class="btn percent">%</button>            <!-- 1 -->            <button class="btn clearOne">CE</button>            <!-- 2 -->            <button class="btn clearAll">C</button>            <!-- 3 -->            <button class="btn back">del</button>            <!-- 4 -->            <button class="btn div1">1/x</button>            <!-- 5 -->            <button class="btn square">x&sup2;</button>            <!-- 6 -->            <button class="btn sqrt">&sup2;√x</button>            <!-- 7 -->            <button class="btn div">÷</button>            <!-- 8 -->            <button class="btn digital">7</button>            <!-- 9 -->            <button class="btn digital">8</button>            <!-- 10 -->            <button class="btn digital">9</button>            <!-- 11 -->            <button class="btn mul">x</button>            <!-- 12 -->            <button class="btn digital">4</button>            <!-- 13 -->            <button class="btn digital">5</button>            <!-- 14 -->            <button class="btn digital">6</button>            <!-- 15 -->            <button class="btn sub">-</button>            <!-- 16 -->            <button class="btn digital">1</button>            <!-- 17 -->            <button class="btn digital">2</button>            <!-- 18 -->            <button class="btn digital">3</button>            <!-- 19 -->            <button class="btn add">+</button>            <!-- 20 -->            <button class="btn neg">+/-</button>            <!-- 21 -->            <button class="btn digital">0</button>            <!-- 22 -->            <button class="btn digital">.</button>            <!-- 23 -->            <button class="btn equal">=</button>        </div>    </div>    <script src="./计算机.js"></script></body> </html>

js部分:

const bt = document.querySelectorAll('.keyboard button')const close = document.querySelector('.close')const res = document.querySelector('.res')//当点击的数字的时候let k = 0let onelet twofunction arr(num) {    bt[num].onclick = function () {        res.innerText += bt[num].innerText        res.innerText = parseFloat(res.innerText)        // console.log(one)     }}//小数点//保留结果小数function fn() {    if (res.innerText.length > 8) {        res.innerText = res.innerText.slice(0, 10)    }    if (res.innerText == 'NaN') {        res.innerText = 0    } } //当点击的是运算符号的时候function symbol(str, fu) {    bt[str].onclick = function () {        k++        if (k > 1) {            return        }        one = parseFloat(res.innerText)        // switch (fu) {        //     case '+':        //         one += one        //         break;        //     case '-':        //         one -= one        //         break;        //     case '*':        //         one *= one        //         break;        //     case '/':        //         one /= one        //         break;        // }        res.innerText = ''        close.style.display = 'block'        close.innerText = bt[str].innerText        console.log(one)    }} arr(21)arr(18)arr(17)arr(16)arr(14)arr(13)arr(12)arr(10)arr(9)arr(8)arr(22)//运算符号symbol(0)symbol(7, '/')symbol(11, '*')symbol(15, '-')symbol(19, '+')console.log(bt[22].innerText)bt[22].onclick = function () {    res.innerText += bt[22].innerText    console.log(565)}bt[23].onclick = function () {    two = parseFloat(res.innerText)    switch (close.innerText) {        case '%':            //toFixed(11)保留11位小数            res.innerText = one % two            k = 0            break;        case '+':            res.innerText = one + two            k = 0            break;        case '-':            res.innerText = one - two            k = 0            break;        case 'x':            res.innerText = one * two            k = 0            break;        case '÷':            res.innerText = one / two            k = 0            break;    }    // console.log(res.innerText.length)    fn()  }bt[1].onclick = function () {    res.innerText = ''}bt[2].onclick = function () {    res.innerText = '0'    close.innerText = 'x'    close.style.display = ''    one = 0    two = 0}bt[3].onclick = function () {    res.innerText = res.innerText.slice(0, res.innerText.length - 1)    if (res.innerText.length === 0) {        res.innerText = '0'        return    }}bt[4].onclick = function () {    res.innerText = 1 / parseFloat(res.innerText)    fn()}bt[5].onclick = function () {    res.innerText = parseFloat(res.innerText) * parseFloat(res.innerText)    fn()} bt[6].onclick = function () {    res.innerText = Math.sqrt(parseFloat(res.innerText))    fn()}bt[20].onclick = function () {    res.innerText = 0 - parseFloat(res.innerText)    fn()}

感谢你能够认真阅读完这篇文章,希望小编分享的“原生JavaScript如何实现网页版计算器”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯