前端案例:简易计算器的实现(dom操作、target、eval函数、try catch、switch-case)

2023-05-16

目录

一、案例效果

二、涉及要点

三、完整代码+详细注释


一、案例效果

二、涉及要点

1. 文本域标签 的 readonly 属性用于设置文本域文字为只读;

2. DOM 获取元素,getElementById()获取带有指定 id 的节点;

3. DOM 事件中的 target 是指获取事件的目标,即**触发事件的真实元素。**如下代码中:

  btn.onclick = function (e) {
    //判断只有点击到按钮上才会将信息录入“显示屏”
    if (e.target.nodeName === "BUTTON") {

e.target.nodeName,e是指触发事件,名称自己定义;target.nodeName 是获取触发事件元素的标签名,我们这里获取按钮 button,意为只有触发事件的元素为按钮时才执行下面逻辑。除此之外还有:

e.target.id

获取事件触发元素的 id

e.target.className

获取事件触发元素的类名

event.target.innerHTML

获取事件触发元素的内容

4.eval 函数

eval() 函数用于计算 JavaScript 字符串,并把它作为脚本代码来执行。如果参数是一个表达式,eval() 函数将执行表达式。如果参数是 Javascript 语句,eval() 将执行 Javascript 语句。

所以当我们点击按钮,将表达式写入“显示屏“,该函数便会自动执行计算。

5. try catch

//格式
try {
    tryCode - 尝试执行代码块
}
catch(err) {
    catchCode - 捕获错误的代码块
}
finally {
    finallyCode - 无论 try / catch 结果如何都会执行的代码块
}

6.switch-case语句

switch ( 表达式 ){
      case 值1:
        语句块1
        break;(结束执行,跳出当前语句)
      case 值n:
        语句块n
        break;
        default:
        语句块n+1( 前面全为false才执行此语句块 )
}

三、完整代码+详细注释

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>简易计算器</title>
  <style>
    .calc {
      width: 300px;
      height: 400px;
      border: 2px solid #149985;
      border-radius: 10px;
      margin: auto;
      background-color: lightgray;
    }

    #btn {
      width: 90%;
      height: 320px;
      margin: 10px auto 0 auto;
      background-color: rgb(238, 234, 234);
    }

    #btn button {
      width: 80px;
      height: 35px;
      margin: 15px 0 0 3px;
      background-color: white;
      border: 1px solid #999;
      border-radius: 5px;
      font-size: 18px;
      font-weight: bolder;
    }

    #btn button:hover {
      background-color: #999;
      color: white;
      cursor: pointer;
    }
  </style>
</head>

<body>
  <div class="calc">
    <!-- 显示数字文本域 -->
    <!-- readonly设置文本域为只读 -->
    <textarea readonly name="" id="text"
      style="width: 90%;height: 30px;display: block;margin: 20px auto 0 auto;font-size: 24px;"></textarea>
    <!-- 键盘按钮 -->
    <div id="btn">
      <button>1</button>
      <button>2</button>
      <button>3</button>
      <button>4</button>
      <button>5</button>
      <button>6</button>
      <button>7</button>
      <button>8</button>
      <button>9</button>
      <button>0</button>
      <button>C</button>
      <button>+</button>
      <button>-</button>
      <button>*</button>
      <button>/</button>
      <button style="width: 98%;">=</button>
    </div>
  </div>
</body>
<script>
  //获取按键区域的元素(键盘)
  var btn = document.getElementById('btn');
  //绑定事件处理函数
  btn.onclick = function (e) {
    //判断只有点击到按钮上才会将信息录入“显示屏”
    if (e.target.nodeName === "BUTTON") {
      //获取文本域元素(显示屏)
      var text = document.getElementById('text');
      //switch 判断当前点击的按钮内容
      switch (e.target.innerHTML) {
        //点击C清空屏幕
        case 'C':
          text.value = '';
          break;
        //如果点击=,获得显示屏中的表达式并计算结果
        case "=":
          var str = text.value;
          //尝试计算显示屏中的内容
          try {
            //将显示屏的内容交给eval做计算,将结果再替换回显示屏中
            text.value = eval(str)
          } catch (err) {
            text.value = err;
          }
          break;
        //点击其他的按钮,将按钮内容追加到显示屏上
        default:
          text.value += e.target.innerHTML;
      }
    }
  }
</script>

</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端案例:简易计算器的实现(dom操作、target、eval函数、try catch、switch-case) 的相关文章

  • 块设备驱动介绍-linux驱动开发第10部分-朱有鹏-专题视频课程

    块设备驱动介绍 linux驱动开发第10部分 3265人已学习 课程介绍 本课程是linux驱动开发的第10个课程 xff0c 主要内容是linux的块设备驱动的介绍 xff0c 首先详细讲了块设备驱动和字符设备驱动的核心差异 xff0c
  • Linux各个系统版本及区别(Ubuntu,CentOS..)

    一 概览 Linux的版本号分为两部分 xff1a 内核版本和发行版本 内核版本 xff1a 不包含外围程序GNU程序库和工具 xff0c 命令行shell xff0c 图形界面的X Window系统和相应的桌面环境等 发行版本 xff1a
  • keil5编译报错问题

    keil5一开始编译文件总是报错 error 3092 anonymous unions are only supported in gnu mode or when enabled with pragma anon unions 错误 x
  • MySQL中的函数

    1 单行函数和多行函数 xff08 聚合函数 分组函数 xff09 xff1a 只对一行进行变换 每行返回一个结果 xff1b 1 单行函数 xff1a a 数值函数 xff1a 基本函数 xff1a ABS x 绝对值 SIGN x 0
  • Centos防火墙配置

    一 防火墙的概念 防火墙技术是用于安全管理的软件和硬件设备 xff0c 在计算机内 外网之间构建一道相对隔绝的保护屏障 xff0c 以保护数据和信息安全性的一种技术 防火墙分为网络防火墙和主机防火墙 网络防火墙由软件和硬件组成 xff0c
  • linux 线程的调度策略

    目录 一 调度策略 1 实时线程 2 非实时线程 3 抢占式调度策略 运行特点 xff1a 4 轮询式调度策略 运行特点 xff1a 二 设置线程的调度策略步骤 1 定义线程句柄 2 定义线程属性结构体 3 初始化属性结构体 4 设置线程是
  • 16选1数据选择器和32选1数据选择器multisim

    大致思路 xff1a xff08 正经内容在下边 xff09 学校期中考试 xff0c 搜了半天发现连16 1都很难搜到 xff0c 一整天做出来 xff0c 趁着还有兴致记录一下过程 老师上课只教了4 1数据选择器 xff0c 于是先从8
  • 【软件工程】对软件工程课程的希望及个人目标

    自我简介 首先进行一下自我介绍 xff0c 我是一名桂林理工大学信息科学与工程学院的本科在读生 xff0c 现已经是本科二年级的学生了 xff0c 上个学期我们刚经历了专业分流 xff0c 很幸运 xff0c 我来到了我所希望来到的软件工程
  • 网络设备驱动介绍-linux驱动开发第11部分-朱有鹏-专题视频课程

    网络设备驱动介绍 linux驱动开发第11部分 3869人已学习 课程介绍 本课程是linux驱动开发的第11个课程 xff0c 主要内容是linux的网络驱动的介绍 xff0c 首先讲述了网络设备驱动接口和之前讲的2种的不同 xff0c
  • 六、如何使用VS调试代码、条件语句

    how to use Visual Studio to debug our code 查看程序断点 调试程序 1 设置断点 断点 xff0c 调试器将中断 xff0c break xff0c 程序调试是将会中断 xff0c continue
  • 【FPGA】Verilog:组合电路 | 3—8译码器 | 编码器 | 74LS148

    前言 xff1a 本章内容主要是演示Vivado下利用Verilog语言进行电路设计 仿真 综合和下载 示例 xff1a 编码 译码器的应用 功能特性 xff1a 采用 Xilinx Artix 7 XC7A35T芯片 配置方式 xff1a
  • ipv6简介

    IPv6地址扩展到128位 2128足够大 xff0c 这个地址空间可能永远用不完 事实上 xff0c 这个数足够为地球上每个分子分配一个IP地址 IPv6地址采用冒号分隔的十六进制数表示 xff0c 例如下面是一个IPv6地址8000 0
  • Nginx -- SSL模块

    目录 一 什么是ssl证书 二 证书的作用 1 浏览器绿色安全标志 2 网站数据加密传输 3 安全标志获得访客信任 4 强大的加密等级保障 5 SSL证书帮助网站保护了用户和网站之间的任何数据的安全 三 SSL证书的类别 1 按照验证方式
  • shell的echo命令

    echo命令用于在shell中打印shell变量的值 xff0c 或者直接输出指定的字符串 linux的echo命令 xff0c 在shell编程中极为常用 在终端下打印变量value的时候也是常常用到的 xff0c 因此有必要了解下ech
  • 2022最新hexo最新搭建教程

    本文时间 xff1a 2022 02 03 安装包版本如下 xff1a NodejsLTS16 13 2 Git2 35 0 成果预览 故人随笔 nodejs安装 1 双击安装包 2 Next 3 修改安装目录为 D Develop nod
  • 子网划分与子网汇总

    1 192 168 1 0 255 255 255 128 划分为4个子网 192 168 1 0 27 192 168 1 1 192 168 1 31 192 168 1 96 27 192 168 1 32 192 168 1 63
  • mongodb 启动rails server

    oot 64 5d5b156fb1b0 cat etc release DISTRIB ID 61 Ubuntu DISTRIB RELEASE 61 20 04 DISTRIB CODENAME 61 focal DISTRIB DESC
  • Shell 脚本中的变量

    文章目录 1 变量概述1 1 变量类型1 2 变量的命名要求1 3 变量作用范围 2 局部变量3 环境变量3 1 系统内置环境变量3 2 环境变量的配置文件 4 只读变量5 位置变量 1 变量概述 变量即在程序运行过程中它的值是允许改变的量
  • Hadoop-HDFS 写数据流程

    HDFS写数据流程 xff1a 客户端向NameNode请求写数据 NameNode判断客户端针对该文件是否有写的权限 没有则报错 再判断文件是否存在 xff0c 不存在则报错 xff0c 存在则通知客户端上传 HDFS客户端负责对文件进行
  • 6.小项目.图片解码播放器-朱有鹏-专题视频课程

    6 小项目 图片解码播放器 6707人已学习 课程介绍 本课程是 朱有鹏老师嵌入式linux核心课程 第6部分 xff0c 是一个课程后的小项目 用开发板本身自带的硬件完成一个基于linux API开发的图片解码播放器 xff0c 实现了对

随机推荐

  • 思科arp欺骗攻击,cdp攻击,DHCP攻击实验命令笔记

    目录 Kali主机扫描 双向攻击 Cdp攻击防护 Stp攻击防护 Kali主机扫描 fping s r 2 g 192 168 1 0 24 扫描网段内存活的主机 arping 192 168 1 1 探测主机是否存活 双向攻击 Arpso
  • 命令草稿集

    port hybrid pvid vlan vlan id 指定Hybrid接口的缺省VLAN ID xff0c 缺省VLAN 1 以太网帧在无线接入控制器中都是以Tagged的形式处理转发的 xff0c 设备必须给接口收到的Untagge
  • mkdir和chmod命令

    1 在 usr目录中新建一个目录名称为 xff1a mytest 并在mytest目录中新建文件net txt 设置文件的属性为文件属主 xff08 u xff09 增加执行权限 文件属主同组用户 xff08 g xff09 增加写入权限
  • Eigen中的SparseMatrix(稀疏矩阵)元素的快速插入

    Eigen中的SparseMatrix xff08 稀疏矩阵 xff09 元素的快速插入 辰宸的备忘录 licc tech Eigen SparseMatrix lt float gt m 3 3 std vector lt Eigen T
  • 【Ubuntu22.04.2中文系统转换,添加中文输入法,修改快捷键】

    上一篇带大家完成了Ubuntu的安装 xff0c 现在来看看答应大家的后续吧 好多人安装Ubuntu后发现是英文 xff0c 找不到怎么切换中文系统和中文输入法 xff0c 今天本多就带大家来看看吧 xff08 看完哦 xff0c 最后面有
  • curl (7) Failed connect to localhost8080; Connection refused

    curl 7 Failed connect to localhost 8080 Connection refused 如果你也是curl 百度是正常的 xff0c curl xff08 自己IP xff09 正常 xff0c 但是 一 cu
  • Java面试基础篇

    Java面试基础篇 基础总结 博客链接导航 Java语言基础常识 https blog csdn net article details 88531257 J2EE基础知识 https blog csdn net article detai
  • 关于Mysql1251解决办法

    问题 xff1a 相信有些小伙伴在用Navicat连接Mysql时 xff0c 都遇到了这样的情况 xff0c 这其实是8 0以后的加密规则问题 解决办法 xff1a 1 我们打开以管理员身份打开cmd管理器 2 输入cdC Program
  • vue-router4路由报“[Vue Router warn] No match found for location with path“

    这里出现该问题的原因 xff1a 在路由配置了参数路径 但是 xff0c 跳转的路径没有参数 xff1a 因此控制台出现了 xff1a
  • Chrome(谷歌浏览器)安装Vue插件vue-devtools(图文详细教程)

    使用Vue开发项目时 xff0c 常会用到一款谷歌浏览器插件 xff0c vue devtools 安装成功后 xff0c 运行本地Vue项目 xff0c 打开浏览器控制台就如下 xff1a 其中可以便捷的查看vueX的数据以及组件结构等
  • 你不能错过的单片机课程-1.1.第1季第1部分-朱有鹏-专题视频课程

    你不能错过的单片机课程 1 1 第1季第1部分 3111人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第1个课程 xff0c 旨在对整个课程体系 学习方法和思路 配套开发板等进行介绍 xff0c 学习完本课程将对整个
  • redis如何设置密码

    密码设置 这里简单介绍一下redis如何设置密码 redis密码设置有两种方式 xff0c 一种需要重启redis服务 xff0c 一种不需要重启redis服务 首先 xff0c 介绍一下需要重启redis服务的设置方式 即找到redis的
  • linux 查看IP地址

    参考资料整理 一 在 linux 下可以通过两个命令来查看本机的 IP 地址 xff1a 1 支持包括 Linux 在内的所有 Unix 系统 sbin ifconfig 2 对于Linux 而言 xff0c 也可以使用 ip 命令查看 x
  • Docker 查看镜像信息

    本文中 xff0c 我们将需要学习 Docker 如何查看镜像信息 xff1f 一 images 命令列出镜像 通过使用如下两个命令 xff0c 列出本机已有的镜像 xff1a docker images 或 xff1a docker im
  • Google Chrome(谷歌浏览器)安装使用

    谷歌浏览器官网https www google cn chrome Chrome是由Google开发的一款简单便捷的网页浏览工具 谷歌浏览器 Google Chrome 可以提帮助你快速 安全的搜索到自己需要的内容 xff0c 功能强大 x
  • IDEA创建一个JavaWeb项目详细步骤

    刚好最近在写数据库大作业任务书 xff0c 留了一份 xff0c 发在博客上 提前说明 使用IDEA 43 Html5 43 CSS 43 JavaWeb 43 MySql开发 并使用Tomcat部署在本地服务器上 其中JDK版本为1 8
  • Nacos集群配置以及在springboot中使用

    1 下载nacos 官方地址为https github com alibaba nacos 2 将nacos解压 最好不要有中文路径 将cluster conf example文件改名为cluster conf 添加如下配置127 0 0
  • Windows下安装Nginx

    一 引言 Nginx 是一个很强大的高性能Web和反向代理服务 也是一种轻量级的Web服务器 可以作为独立的服务器部署网站 应用非常广泛 特别是现在前后端分离的情况下 而在开发过程中 我们常常需要在window系统下使用Nginx作为Web
  • Linux安装curl完整步骤

    文章目录 1 安装步骤 1 安装步骤 下载curl安装包 xff1a wget http curl haxx se download curl 7 38 0 tar gz 解压 xff1a tar xzvf curl 7 38 0 tar
  • 前端案例:简易计算器的实现(dom操作、target、eval函数、try catch、switch-case)

    目录 一 案例效果 二 涉及要点 三 完整代码 43 详细注释 一 案例效果 二 涉及要点 1 文本域标签 的 readonly 属性用于设置文本域文字为只读 xff1b 2 DOM 获取元素 xff0c getElementById 获取