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

2023-11-20

一、先用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>
				//使用οnclick="函数()" 添加点击事件
				<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对象时候,无法修改文本域里的内容
    如图:
    在这里插入图片描述

在这里插入图片描述

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

  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的后面

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


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

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

使用html+css+javaScript 完成计算器 的相关文章

  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • 从对象中取出具有无效(NaN、空白等)值的键的最佳方法?

    我有一个供用户填写的简短搜索表单 将有多个搜索查询进入 MongoDB 该表单创建一个名为的变量searchParams可能看起来像这样 var searchParams city Springfield bedrooms 3 bathro
  • fadeOut() 和slideUp() 同时进行?

    我已经发现jQuery 淡出然后滑动 https stackoverflow com questions 734554 jquery fadeout then slideup这很好 但不是那个 我怎么能够fadeOut and slideU
  • 如何在 JavaScript 中将变量的内容写入文件[重复]

    这个问题在这里已经有答案了 可能的重复 firefox 如何启用本地 JavaScript 来读取 写入我的 PC 上的文件 https stackoverflow com questions 2846045 firefox how to
  • Javascript:我应该隐藏我的实现吗?

    作为一名 C 程序员 我有一个习惯 将可以而且应该私有的东西设为私有 当 JS 类型向我公开其所有私有部分时 我总是有一种奇怪的感觉 而且这种感觉并没有被 唤起 假设我有一个类型draw方法 内部调用drawBackground and d
  • 修改 Twitter 帖子上可编辑 Div 的内容

    我正在编写一个 chrome 扩展 它可以帮助用户在 Twitter 上输入内容 当在 twitter 上写推文时 twitter 会打开一个可编辑的 div 容器 当用户输入内容时 twitter 大概正在使用某些网络框架 会生成子 di
  • 非法使用break语句; javascript

    当这个变量达到一定数量时 我希望循环停止 但我不断收到错误 未捕获的语法错误 非法的中断语句 function loop if isPlaying jet1 draw drawAllEnemies requestAnimFrame loop
  • 如何在具有相同值的下拉菜单上触发 jQuery 更改事件

    即使用户选择相同的值 如何每次都触发 jQuery 更改事件 我需要刷新效果 例如如果用户选择Lawyer它会发出警报hello然后用户再次选择Lawyer从下拉菜单中 它应该发出警报hello 我怎样才能实现它 以下是代码 jQuery
  • Socket IO 服务器到服务器

    服务器是否可以使用 Socket IO 连接到另一个服务器并被视为客户端 并让它加入房间 接收 io sockets in lobby emit 和更多 第一个服务器也在监听连接 消息 嘿 Brad 下面是我的完整 js 应用程序 供参考
  • 嵌套 DIV 的类似斑马的 CSS 样式

    我嵌套了 DIV 元素 但我不知道嵌套的级别 我需要每个都有与其父级不同的背景 创建类似斑马的颜色 我只使用两种背景 深色和白色 效果需要类似于在容器中设置奇数和偶数子级的样式 但在我的例子中 子级是嵌套的 我可以使用每个嵌套元素的规则来做
  • 中有样式表 吗?

    在内部链接 CSS 文件是一个坏主意吗 body 我读过 如果浏览器在外部找到另一个 CSS 文件 则它会被迫重新开始 CSS 渲染 head 只是因为它可能需要将样式应用于已经渲染的元素 另外 我认为 HTML 无法正确验证 我需要确认这
  • AngularStrap 工具提示禁用我的自定义指令

    我正在尝试让 bs tooltip AngularStrap 指令与我自己的名为 checkStrength 的自定义指令一起使用 该指令检查密码的强度 单独使用这些指令中的任何一个时 它们都可以正常工作 但不能一起工作 This http
  • 使 Bootstrap Popover 在悬停而不是单击时出现/消失

    我正在使用 Bootstrap 构建一个网站Popover http twitter github com bootstrap javascript html popovers我不知道如何使弹出窗口出现在悬停而不是单击时 我想做的就是当有人
  • 在 Android Chrome 中隐藏 HTML5 音频/视频通知

    我的网络应用程序上有一个 HTML5 音频元素 在某些时候 我使用以下代码以编程方式停止播放 audioElement pause audioElement currentTime 0 播放音频时 我的 Android 设备 使用 Goog
  • 使用 ng-if 改变角度方向

    我想通过单击将方向从 rtl 更改为 ltr and in 设置 html
  • 在 React Web 应用程序中使用 createjs-soundjs

    我想用https www npmjs com package createjs soundjs https www npmjs com package createjs soundjs在 React Web 应用程序上播放声音 我正常安装了
  • 如果选中复选框则显示 div

    我正在尝试构建类似 WordPress 选项的东西 用于在创建文章时切换字段可见性 我所构建的依赖于 click函数使用相应的字段名称切换父项 我想知道如果选中该复选框 执行此操作的最佳方法是什么 因为如果您选中一个框并重新加载页面 因为它
  • 减小 TinyMCE 文本区域中的行间距

    I am using TinyMCE to provide a rich text editing text editor But the line spacing between the lines is too much I have
  • Jquery 以编程方式更改

    文本

    编辑 解决方案是将其添加到个人资料页面而不是性别页面 profile live pageinit function event p pTest text localStorage getItem gender 我在列表视图中有一个带有一些文
  • HTML 表格 - 固定列宽和多个可变列宽

    我必须建立一个有 5 列的表 表格宽度是可变的 内容宽度的 50 有些列包含固定大小的按钮 因此这些列应该有一个固定大小 例如 100px 有些列中有文本 所以我希望这些列具有可变的列宽 例如 Column1 tablewidth sum

随机推荐

  • vue3前端以json样式输入组件实现

    在 Vue 3 中 你可以创建一个组件 让用户输入 JSON 并将这个 JSON 渲染成某种样式或结构 以下是一个简单示例 它涵盖了如何在 Vue 3 中创建一个接受 JSON 输入并呈现其内容的组件 Setup Vue Project 如
  • IO多路复用

    1 IO模型 IO模型是指四种不同的文件读写方式 1 阻塞IO 阻塞IO是最常用 最简单 效率最低的一种IO模型 阻塞读 如果有数据可读 则直接读取数据 如果没有数据可读 则读会阻塞 直到读取到数据 或 出错才返回 阻塞写 如果有空间可供写
  • python3(四)Pandas库

    数据摘要pandas 目录 1 pandas库 1 1 pandas库 1 2 Series类型 1 3 Series类型的基本操作 1 4 DataFrame类型 1 5 数据类型操作 1 6 数据类型运算 2 数据特征分析 2 1 数据
  • c#获取cpu序列号

  • RabbitMQ集群架构模式

    搭建Mirror镜像集群 4369是erlang的发现端口 5672是rabbitmq的通信端口 15672是rabbitmq的可视化控制台的端口号 25672是erlang底层发送消息和分配消息的底层端口 firewall cmd zon
  • umi 后台管理demo

    umi 后台管理demo umi react ts dva antd egg 有待优化 简单的前后端管理demo 接口提供增删查改 前端也有相应功能 github代码 https github com huiBuiling ql admin
  • 软件测试之第九章 搭建Web服务器

    第九章 搭建 Web 服务器 一 Web 简介 1 网页 通过浏览器打开的任意一个页面 窗口 本质上是服务器中的一个文件 是使用如 html asp aspx php jsp cgi 等语言编写的代码文件 扩展名有 htm html sht
  • The OpenWire Wire Format

    The OpenWire Wire Format 字面意思是 开放连接是默认连接 传输 格式 开放连接是activemq的默认连接格式 它提供一种高效率的二进制格式来使消息高速传输 开放连接能够被JMS的客户端配置为连接URL字符串 或者一
  • GSM模块_GPRS数据传输机制和原理

    通信专业术语 BSS 基站子系统 通过无线接口与移动台直接联系 负责在一定区域内和移动台通信 GSM BTS 基站收发台 可以看作一复杂的无线调制器 BSS的主要部分 每个分配有若干信道 GSM RBS Radio Base Station
  • Webpack插件核心原理

    引言 围绕 Webpack 打包流程中最核心的机制就是所谓的 Plugin 机制 所谓插件即是 webpack 生态中最关键的部分 它为社区用户提供了一种强有力的方式来直接触及 webpack 的编译过程 compilation proce
  • knime简介_KNIME简介

    knime简介 Data Science is abounding It considers different realms of the data world including its preparation cleaning mod
  • ubuntu本地安装jdk17

    下载 wget https download oracle com java 17 archive jdk 17 0 7 linux x64 bin tar gz 解压 tar zxvf jdk 17 0 7 linux x64 bin t
  • 【c++】Lambda表达式

    Lambda表达式 Lambda表达式是C 中的匿名函数 允许你在需要时定义和使用小型函数 语法 Lambda表达式的基本语法如下 scssCopy code 捕获列表 参数列表 gt 返回类型 Lambda函数体 捕获列表定义了Lambd
  • PAJ7620U2手势识别——配置0x00寄存器(3)

    文章目录 前言 一 为啥要配置0x00寄存器 二 配置步骤 1 单个读操作步骤图 2 模块状态转移图绘制 3 模块波形图绘制 4 上板验证 5 参考代码 总结 前言 在前面的教程中 小编带领各位读者学习了如何通过I2C协议去唤醒PAJ762
  • vue列表跳转详情,记录列表滚动不变

    记录主元素 computed elTable function return document getElementsByClassName layout content 0 当引入keep alive的时候 页面第一次进入 钩子的触发顺序
  • 回溯法展开状态空间树

    解空间 假设问题的解能用n元组 X1 Xn 表示 其中Xi取自某个有穷集Si 这些n元组构成的集合称为问题的解空间 假设集合Si的大小 Si mi 则解空间的大小m m1 m2 mn 注意这里解空间的大小取决于元组中每个元素的可能取值的数量
  • STM32内部参照电压VREFIN的使用

    一 STM32的内部参照电压VREFINT和ADCx IN17相连接 它的作用是相当于一个标准电压测量点 和MSP430不一样 内部参照电压VREFINT只能出现在主ADC1中使用 内部参照电压VREFINT与参考电压不是一回事 ADC的参
  • 详解git pull和git fetch的区别:

    前言 在我们使用git的时候用的更新代码是git fetch git pull这两条指令 但是有没有小伙伴去思考过这两者的区别呢 有经验的人总是说最好用git fetch git merge 不建议用git pull 也有人说git pul
  • @Slf4j 实现日志输入到外部文件

    1 添加一个配置文件 src main resources logback spring xml
  • 使用html+css+javaScript 完成计算器

    一 先用html与css搭建骨架 思路 将计算器的数字按钮放进一个表格里 再通过css修饰 然后对指定的数字按钮或功能按钮添加事件 将需要计算的式子放进一个字符串里 最后通过全局方法eval 计算出来 html的骨架搭建 这里的用一个 di