javascript模拟实现计算器
作者:“HelloWorld” 发布时间:2024-10-13 04:03:34
标签:js,计算器
本文实例为大家分享了javascript模拟实现计算器的具体代码,供大家参考,具体内容如下
功能:
1、实现单击按钮录入数字
2、实现基础四则运算功能,并添加必要的异常处理。
3、实现小数点功能并添加异常处理:小数点只能出现一次
4、实现正负号功能
5、实现退位功能,已经是最后一位时,显示框显示为0
6、AC清屏功能
使用的知识点:
1、利用大量的自定义函数实现业务逻辑
2、灵活运用事件及事件处理
3、培养异常处理的编程方法
4、培养并实践利用不同思路实现编程
综合练习的目的:
1、将css,html和js有效的进行技术组合,实现业务功能
2、锻炼和培养编程思想,解决问题的能力和方法
3、锻炼和培养利用多种编程思路,完成预先设定的目标
而且最近刚上手js,感觉特别有趣,学习java基础的时候没有那么大的兴趣。感觉刚一上手js感觉特别好玩有趣,在这里把一个简单的计算器源码展示出来:
html页面:
<!DOCTYPE html>
<html>
<head>
<title>js计算器</title>
<link rel="stylesheet" type="text/css"href="index.css" >
<script type="text/javascript" src="index.js">
</script>
</head>
<body onload="init()">
<!-- 1个文本框10个数字....20个按钮 -->
<div id="div1">
<form action="">
<div id="div2">
<input type="text" name="num" disabled="disabled" id="num" value="0">
</div>
</form>
<div id="div3">
<input type="button" name="" value="C" id="baidu">
<input type="button" name="" value="←" id="">
<input type="button" name="" value="+/-" id="">
<input type="button" name="" value="/" id="">
<input type="button" name="" value="7" id="">
<input type="button" name="" value="8" id="">
<input type="button" name="" value="9" id="">
<input type="button" name="" value="*" id="">
<input type="button" name="" value="4" id="">
<input type="button" name="" value="5" id="">
<input type="button" name="" value="6" id="">
<input type="button" name="" value="-" id="">
<input type="button" name="" value="1" id="" >
<input type="button" name="" value="2" id="" >
<input type="button" name="" value="3" id="" >
<input type="button" name="" value="+" id="">
<input type="button" name="" value="0" id="">
<input type="button" name="" value="=" id="">
<input type="button" name="" value="." id="">
<input type="button" name="" value="AC" id="">
</div>
</div>
</body>
</html>
js页面:
function init(){
var num=document.getElementById("num");
num.value=0;
var btn_num1;
var fh;
num.disabled="disabled";
// var n1=document.getElementById("n1");
// n1.οnclick=function(){
// }
var oButton=document.getElementsByTagName("input");
for(var i=0;i<oButton.length;i++){
oButton[i].onclick=function(){
if(isnumber(this.value)){
//num.value=(num.value+this.value)*1;//把默认0消除
if(isNull(num.value)){
num.value=this.value;
}else{
num.value=num.value+this.value;
}
}else{
//测试功能是否正确
// alert("bushishuzi")
var btn_num=this.value;
//测试功能是否正确(弹窗)
// alert(btn_num);
switch(btn_num){
case "+":
// alert(11);
btn_num1=num.value*1;//=parseInt(num.value)这个也可以,后面的话需要改为number
num.value=0;
fh="+";
break;
case "-":
btn_num1=num.value*1;
num.value=0;
fh="-";
break;
case "*":
btn_num1=num.value*1;
num.value=0;
fh="*";
break;
case "/":
btn_num1=num.value*1;
num.value=0;
fh="/";
break;
case ".":
num.value=dec_number(num.value);
break;
case "←":
num.value=back(num.value);
break;
case "+/-":
num.value=sign(num.value);
break;
case "AC":
num.value="0";
break;
case "C":
init_baidu();
break;
case "=":
switch(fh){
case"+":
num.value=btn_num1+num.value*1;
break;
case"-":
num.value=btn_num1-num.value*1;
break;
case"*":
num.value=btn_num1*num.value*1;
break;
case"/":
if(num.value==0){
num.value=0;
alert("除数不能为0");
}else{
num.value=btn_num1/num.value*1;
}
break;
}
break;
}
}
}
}
}
//小数点的功能
function dec_number(n){
if(n.indexOf(".")==-1){
n=n+".";
}
return n;
}
//验证文本框是否为空或者为0
function isNull(n){
if(n*1==0||n.length==0){
return true;
}else{
return false;
}
}
//退位键
function back(n){
n=n.substr(0,n.length-1);
if(isNull(n)){
n="0";
}
return n;
}
//正负号+/-
function sign(n){
if(n.indexOf("-")==-1){
n="-"+n;
}else{
n=n.substr(1,n.length);
}
return n;
}
//isNaN:不能转换成数字:true,可以转换成数字是false
function isnumber(n){
return !isNaN(n);
}
//C按钮使用一个超级链接,链接到百度,这个可以随便发挥
function init_baidu(){
window.location.href="http://www.baidu.com";
}
css页面:
*{
margin:0px;
padding:0px;
}
div{
width:170px;
}
#div1{
top:60px;
left: 100px;
position:absolute;
}
input[type="button"]{
width:30px;
margin-right: 5px;
}
input[type="text"]{
width:147px;
text-align: right;
background-color:white;
border:1px solid;
padding-right:1px;
box-sizing:content-box;
}
input[type="button"]:hover{/*//伪类和按钮的使用*/
background-color:white;
border:1px solid;
}
来源:https://blog.csdn.net/qq_37215985/article/details/115425902


猜你喜欢
- 前几天安装Python的时候没有装上pip工具,所以只能现在手动安装了。首先,访问https://bootstrap.pypa.io/get
- 如下所示:# -*- coding: utf-8 -*-# @Author: xiaodong# @Date: just hid
- 前言最近在维护项目的python项目代码,项目使用了 python 的日志模块 logging, 设定了保存的日志数目, 不过没有生效,还要
- 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError、Unicode
- 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Pyt
- 摘要:在本篇博客中,我们将介绍如何优化YOLOv5车牌识别系统的性能,以及如何将模型部署到实际应用中。我们将重点讨论模型压缩、加速技术和部署
- 本文实例讲述了Python创建对称矩阵的方法。分享给大家供大家参考,具体如下:对称(实对称)矩阵也即:step 1:创建一个方阵>&g
- 本文实例讲述了js+CSS实现弹出居中背景半透明div层的方法。分享给大家供大家参考。具体实现方法如下:<!DOCTYPE html
- 一、引言生成数据库表有下面的三种方式:代码生成。程序包管理器控制台迁移。命令行迁移。下面分别介绍上面的三种方法。二、具体示例1、代码生成在程
- 方法一先按esc进入命令模式,即左侧线为蓝色(为绿色时是编辑模式),按z键即可恢复方法二如果是运行过的代码直接运行history方法三功能栏
- 简介观察者模式是行为型模式的一种,定义了对象间一对多的关系。当对象的状态发生变化时候,依赖于它的对象会得到通知。适用场景类似触发钩子事件,可
- 1、 设置WriteHeader的顺序问题之前遇到个问题,在一段代码中这样设置WriteHeader,最后在header中取Name时怎么也
- 近来有客户要求用table显示一大串数据,由于滚动后就看不到表头,很不方便,所以想到这个效果。上次做table排序对table有了一些了解,
- 在日常开发中,我们前端必不可少的需要像后端请求数据。但是一般前后端分离,所以域名、端口等肯定不尽相同,这样就不可避免的会遇到浏览器的同源策略
- 0、前言评判一个算法的好坏的标准:时间复杂度空间复杂度1、归并排序算法是什么?冒泡排序(Bubble Sort)是一种建立在归并操作上面的一
- 1. join()join(’参数‘)把数组的元素以传入的参数为分割符,转换成字符串。let arr
- 一、引言Windows Communication Foundation(WCF)是Microsoft为构建面向服务的应用程序而提供的统一编
- 很久没写过东西了,今天看了chinahuman 的《用asp自动解析网页中的图片地址,并将其保存到本地服务器》,于是优化了这个程序,并且将所
- 一、问题目前为止,M1系统上还不能使用pip3安装pandas库,无法使用pandas进行数据分析和处理。虽然网上也有专门适配M1的pyth
- MySQL从5.1开始支持event功能,类似oracle的job功能。有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用