javascript实现计算器代码(在JS中如何实现网页版计算器)

2026-09-24 09:45:01 :0

javascript实现计算器代码(在JS中如何实现网页版计算器)

今天给各位分享在JS中如何实现网页版计算器的知识,其中也会对在JS中如何实现网页版计算器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

在JS中如何实现网页版计算器


这篇文章主要介绍了JS基于递归实现网页版计算器的方法,结合实例形式分析了javascript采用递归算法实现网页版计算器的步骤与相关操作技巧,需要的朋友可以参考下
本文实例讲述了JS基于递归实现网页版计算器的方法。分享给大家供大家参考,具体如下:
递归实现网页版计算器可以简化代码,设计思路:
1、css+html实现计算器的外观,给每个button绑定number(z)事件,传入z的不同来区分触发事件的按钮。
《style》放入head中
这个p放在body中,是计算器的html,number()通过传入不同的数字,区分触发按钮。
《p class="bg"》
《p id="txt"》《/p》
《button id="bt10" value="+"》+《/button》
《button id="bt11" value="-"》-《/button》
《button id="bt12" value="*"》*《/button》
《br data-filtered="filtered"》《button id="bt13" value="/"》/《/button》
《button id="bt14" value="="》=《/button》
《br data-filtered="filtered"》《button id="bt1" value="1"》1《/button》
《button id="bt2" value="2"》2《/button》
《button id="bt3" value="3"》3《/button》
《br data-filtered="filtered"》《button id="bt4" value="4"》4《/button》
《button id="bt5" value="5"》5《/button》
《button id="bt6" value="6"》6《/button》
《br data-filtered="filtered"》《button id="bt7" value="7"》7《/button》
《button id="bt8" value="8"》8《/button》
《button id="bt9" value="9"》9《/button》
《/p》2、在number(z)方法中,利用DOM的innerHTML实现表达式的实时显示,并用字符串content存储已点击的数字或符号,当点击"="时,调用fact(content)进行计算。
代码如下:
var content; //存储已点击的数字或符号,要定义成全局的,如果定义在number()中,每次content都会被重新赋值
function number(z) {
var k=document.getElementById("txt");//获取显示框的 DOM,并缓存在k中
if(z==14){//如果点击了"="号
var sum = fact(content);//调用fact()进行计算,并把结果赋值给sum
content=content+"="+sum;//在要显示的内容后加入"="和sum
k.innerHTML = content;
content = null;//将content清空,准备下次计算
}else{
//如果没有点击"="号,而是点击的运算符,就需要通过switch把数字转化成运算符
switch(z){
case 10: z = ’+’; break;
case 11: z = ’-’; break;
case 12: z = ’*’; break;
case 13: z = ’/’; break;
}
//把此时输入的字符存入content
if(content){
content+=z.toString();
}else{
content=z.toString();
}
k.innerHTML = content;//让它实时显示
}
}3、本计算器中递归算法的思路:在fact(content)中,先用content.indexOf("+")判断"+"号是否存在,若存在,则分别递归调用index前后的两个字符串,并让其相加,直到所有串中都找不到"+"后,开始用content.lastIndexOf("-")判断"-"号,后续操作和加号一样,存在则递归index前后的两个字符串,并让其相减,直到找不到减号,就开始判断乘号和除号,直到没有符号后返回parseFloat(content),这里的content是递归调用后的无符号字符串,并不是最开始引入的参数了。
//实现递归计算
function fact(content){
var index = content.indexOf("+");//获取"+"号的index
if(index != -1){
return fact(content.substring(0,index))+fact(content.substring(index+1));
//当找得到“+”号时,分成两部分相加递归
}else{
var index2 = content.lastIndexOf("-");//当找不到“+”号时,开始找“-”号
if(index2 != -1){
return fact(content.substring(0,index2))-fact(content.substring(index2+1));
//当找得到“-”号时,分成两部分相减递归
}else{
var index3 = content.indexOf("*");//当找不到“-”号时,开始找“*”号
if(index3 != -1){
return fact(content.substring(0,index3))*fact(content.substring(index3+1));
//当找得到“*”号时,分成两部分相乘递归
}else{
var index4 = content.lastIndexOf("/");//当找不到“*”号时,开始找“/”号
if(index4 != -1){
return fact(content.substring(0,index4))/fact(content.substring(index4+1));
//当找得到“/”号时,分成两部分相除递归
}else{
return parseFloat(content);//当找不到“/”号时,返回这段串的变成float型的数值
}
}
}
}
}以上是全部代码,设计思路中要注意的两点是:
1、加号和乘号用的indexOf(),而减号和除号用的lastIndexOf()。
举个例子:content="3-2-1"
它如果用indexOf(),先把串分成fact("3")-fact("2-1"),前面"3"无符号,递归调用fact时返回parseFloat("3"),而后面的递归调用时,会变成parseFloat("2")-parseFloat("1")=1,这个是fact("2-1")的返回值,最终结果是2,这就相当于:3-(2-1)。
如果用lastIndexOf(),它把串分成fact("3-2")-fact("1"),fact("3-2")的返回值是parseFloat("3")-parseFloat("2")=1,这样就实现了从左到右的计算。
除号也是同理:若content="6/3/2"用indexOf(),相当于:6/(3/2),因为加号和乘号不存在顺序问题,因此可以用indexOf()。
2、乘除在判断的内层,加减在判断的外层。
由于乘除要先计算,内层的判断会先获得没有符号的串,他们就会先计算。
这个计算器个人觉得可以优化的地方:(大家也可以思考下)
1、给button绑定事件的时候,采用事件代理模式。
2、用到的哪些属性或方法需要考虑浏览器兼容问题。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
如何使用vuex实现菜单管理
使用Vue如何开发树形组件
详细解读Angular5.1新功能
使用nodejs如何实现gulp打包

怎么用javascript调用系统自带的计算器

用javascript调用系统自带的计算器方法如下:
《script language=javascript》
function Run(command)
{
window.oldOnError = window.onerror;
window._command = command;
window.onerror = function (err)
{
if (err.indexOf(’utomation’) != -1)
{
alert(’命令’ + window._command + ’ 已经被用户禁止!’);
return true;
}
else
return false;
}
var wsh = new ActiveXObject(’WScript.Shell’);
if (wsh)
wsh.Run(command);
window.onerror = window.oldOnError;
}
《/script》
《input type="button" class="button" value="计算器" onclick="Run(’calc’)"/》

求计算器的javascript代码,要简单的

JavaScript计算器代码
《FORM name="Keypad" action=""》
《TABLE》
《B》
《TABLE border=2 width=50 height=60 cellpadding=1 cellspacing=5》
《TR》
《TD colspan=3 align=middle》
《input name="ReadOut" type="Text" size=24 value="0" width=100%》
《/TD》
《TD》
《/TD》
《TD》
《input name="btnClear" type="Button" value=" C " onclick="Clear()"》
《/TD》
《TD》《input name="btnClearEntry" type="Button" value=" CE " onclick="ClearEntry()"》
《/TD》
《/TR》
《TR》
《TD》
《input name="btnSeven" type="Button" value=" 7 " onclick="NumPressed(7)"》
《/TD》
《TD》
《input name="btnEight" type="Button" value=" 8 " onclick="NumPressed(8)"》
《/TD》
《TD》
《input name="btnNine" type="Button" value=" 9 " onclick="NumPressed(9)"》
《/TD》
《TD》
《/TD》
《TD》
《input name="btnNeg" type="Button" value=" +/- " onclick="Neg()"》
《/TD》
《TD》
《input name="btnPercent" type="Button" value=" % " onclick="Percent()"》
《/TD》
《/TR》
《TR》
《TD》
《input name="btnFour" type="Button" value=" 4 " onclick="NumPressed(4)"》
《/TD》
《TD》
《input name="btnFive" type="Button" value=" 5 " onclick="NumPressed(5)"》
《/TD》
《TD》
《input name="btnSix" type="Button" value=" 6 " onclick="NumPressed(6)"》
《/TD》
《TD》
《/TD》
《TD align=middle》《input name="btnPlus" type="Button" value=" + " onclick="Operation(’+’)"》
《/TD》
《TD align=middle》《input name="btnMinus" type="Button" value=" - " onclick="Operation(’-’)"》
《/TD》
《/TR》
《TR》
《TD》
《input name="btnOne" type="Button" value=" 1 " onclick="NumPressed(1)"》
《/TD》
《TD》
《input name="btnTwo" type="Button" value=" 2 " onclick="NumPressed(2)"》
《/TD》
《TD》
《input name="btnThree" type="Button" value=" 3 " onclick="NumPressed(3)"》
《/TD》
《TD》
《/TD》
《TD align=middle》《input name="btnMultiply" type="Button" value=" * " onclick="Operation(’*’)"》
《/TD》
《TD align=middle》《input name="btnDivide" type="Button" value=" / " onclick="Operation(’/’)"》
《/TD》
《/TR》
《TR》
《TD》
《input name="btnZero" type="Button" value=" 0 " onclick="NumPressed(0)"》
《/TD》
《TD》
《input name="btnDecimal" type="Button" value=" . " onclick="Decimal()"》
《/TD》
《TD colspan=3》
《/TD》
《TD》
《input name="btnEquals" type="Button" value=" = " onclick="Operation(’=’)"》
《/TD》
《/TR》
《/TABLE》
《/TABLE》
《/B》
《/FORM》
《/CENTER》
《SCRIPT LANGUAGE="JavaScript"》
《!-- Begin
var FKeyPad = document.Keypad;
var Accum = 0;
var FlagNewNum = false;
var PendingOp = "";
function NumPressed (Num) {
if (FlagNewNum) {
FKeyPad.ReadOut.value = Num;
FlagNewNum = false;
}
else {
if (FKeyPad.ReadOut.value == "0")
FKeyPad.ReadOut.value = Num;
else
FKeyPad.ReadOut.value += Num;
}
}
function Operation (Op) {
var Readout = FKeyPad.ReadOut.value;
if (FlagNewNum && PendingOp != "=");
else
{
FlagNewNum = true;
if ( ’+’ == PendingOp )
Accum += parseFloat(Readout);
else if ( ’-’ == PendingOp )
Accum -= parseFloat(Readout);
else if ( ’/’ == PendingOp )
Accum /= parseFloat(Readout);
else if ( ’*’ == PendingOp )
Accum *= parseFloat(Readout);
else
Accum = parseFloat(Readout);
FKeyPad.ReadOut.value = Accum;
PendingOp = Op;
}
}
function Decimal () {
var curReadOut = FKeyPad.ReadOut.value;
if (FlagNewNum) {
curReadOut = "0.";
FlagNewNum = false;
}
else
{
if (curReadOut.indexOf(".") == -1)
curReadOut += ".";
}
FKeyPad.ReadOut.value = curReadOut;
}
function ClearEntry () {
FKeyPad.ReadOut.value = "0";
FlagNewNum = true;
}
function Clear () {
Accum = 0;
PendingOp = "";
ClearEntry();
}
function Neg () {
FKeyPad.ReadOut.value = parseFloat(FKeyPad.ReadOut.value) * -1;
}
function Percent () {
FKeyPad.ReadOut.value = (parseFloat(FKeyPad.ReadOut.value) / 100) * parseFloat(Accum);
}
// End --》
《/SCRIPT》

如果你还想了解更多这方面的信息,记得收藏关注本站。

javascript实现计算器代码(在JS中如何实现网页版计算器)

本文编辑:admin

更多文章:


devicenet通讯协议(DeviceNet协议的对象模型)

devicenet通讯协议(DeviceNet协议的对象模型)

大家好,devicenet通讯协议相信很多的网友都不是很明白,包括DeviceNet协议的对象模型也是一样,不过没有关系,接下来就来为大家分享关于devicenet通讯协议和DeviceNet协议的对象模型的一些知识点,大家可以关注收藏,免

2026年2月16日 10:00

软考中级职称(中级职称软考有哪些)

软考中级职称(中级职称软考有哪些)

大家好,今天小编来为大家解答以下的问题,关于软考中级职称,中级职称软考有哪些这个很多人还不知道,现在让我们一起来看看吧!本文目录中级职称软考有哪些软考中级哪个最容易过软考中级职称有哪些软考直接报中级职称可以吗软考中级相当于什么职称软考中级可

2025年12月16日 13:45

settimeout在shell(如何写一个shell脚本用sftp上传文件)

settimeout在shell(如何写一个shell脚本用sftp上传文件)

大家好,如果您还对settimeout在shell不太了解,没有关系,今天就由本站为大家分享settimeout在shell的知识,包括如何写一个shell脚本用sftp上传文件的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始

2026年3月4日 05:00

2020至2021nba最新排名(nba薪资排名(NBA球员年收入排名出炉))

2020至2021nba最新排名(nba薪资排名(NBA球员年收入排名出炉))

本篇文章给大家谈谈2020至2021nba最新排名,以及nba薪资排名(NBA球员年收入排名出炉)对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录nba薪资排名(NBA球员年收入排名出炉)nba常规赛掘金近几年排名nba历史排

2026年1月2日 06:00

微信发广告赚钱平台(微信广告助手怎么赚钱)

微信发广告赚钱平台(微信广告助手怎么赚钱)

本篇文章给大家谈谈微信发广告赚钱平台,以及微信广告助手怎么赚钱对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录微信广告助手怎么赚钱几款自媒体

2026年7月6日 17:45

thefacts课文(a hero’s aspiration课文翻译)

thefacts课文(a hero’s aspiration课文翻译)

大家好,thefacts课文相信很多的网友都不是很明白,包括a hero’s aspiration课文翻译也是一样,不过没有关系,接下来就来为大家分享关于thefacts课文和a hero’s aspiration课文翻译的一些知识点,大家

2026年1月5日 01:30

在线文字转图片工具(怎么把微博长文转成照片)

在线文字转图片工具(怎么把微博长文转成照片)

大家好,如果您还对在线文字转图片工具不太了解,没有关系,今天就由本站为大家分享在线文字转图片工具的知识,包括怎么把微博长文转成照片的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录怎么把微博长文转成照片图片转文字软件

2026年8月26日 19:15

法国晋级世界杯决赛(为什么世界杯决赛法国队会输)

法国晋级世界杯决赛(为什么世界杯决赛法国队会输)

“法国晋级世界杯决赛”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看法国晋级世界杯决赛(为什么世界杯决赛法国队会输)!本文目录为什么世界杯决赛法国队会输法国几次世界杯夺冠世界杯中法国几次进决赛法国世界杯法国世界杯决赛阵容如何

2026年5月8日 16:00

finder在苹果手机里怎么打开(苹果手机终端怎么打开)

finder在苹果手机里怎么打开(苹果手机终端怎么打开)

其实finder在苹果手机里怎么打开的问题并不复杂,但是又很多的朋友都不太了解苹果手机终端怎么打开,因此呢,今天小编就来为大家分享finder在苹果手机里怎么打开的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录苹

2026年5月24日 01:45

vlookup函数的好处(voolkup是什么)

vlookup函数的好处(voolkup是什么)

其实vlookup函数的好处的问题并不复杂,但是又很多的朋友都不太了解voolkup是什么,因此呢,今天小编就来为大家分享vlookup函数的好处的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录voolkup是什

2026年8月16日 13:15

javascript数组拼接(javascript连接许多字符串,且用空格隔开,有没有什么方便的写法)

javascript数组拼接(javascript连接许多字符串,且用空格隔开,有没有什么方便的写法)

各位老铁们,大家好,今天由我来为大家分享javascript数组拼接,以及javascript连接许多字符串,且用空格隔开,有没有什么方便的写法的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的

2026年9月20日 22:00

subject to是什么意思(subject to是什么意思)

subject to是什么意思(subject to是什么意思)

大家好,如果您还对subject to是什么意思不太了解,没有关系,今天就由本站为大家分享subject to是什么意思的知识,包括subject to是什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录su

2025年10月12日 15:30

jsp文件是用来编写什么的(解释JSP的作用,并列举JSP的特点)

jsp文件是用来编写什么的(解释JSP的作用,并列举JSP的特点)

今天给各位分享解释JSP的作用,并列举JSP的特点的知识,其中也会对解释JSP的作用,并列举JSP的特点进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录解释JSP的作用,并列举JSP的特点jsp可以做什么解释J

2025年11月5日 13:00

vb编程设计例题100例答案(vb程序设计题,请高手解答)

vb编程设计例题100例答案(vb程序设计题,请高手解答)

“vb编程设计例题100例答案”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看vb编程设计例题100例答案(vb程序设计题,请高手解答)!本文目录vb程序设计题,请高手解答VB编程题vb程序设计题,请高手解答Vb编程实现两个

2026年9月8日 15:45

thesettingsun怎么翻译([汉译英]各位高手 来帮下忙 翻译几个词个句子)

thesettingsun怎么翻译([汉译英]各位高手 来帮下忙 翻译几个词个句子)

今天给各位分享[汉译英]各位高手 来帮下忙 翻译几个词个句子的知识,其中也会对[汉译英]各位高手 来帮下忙 翻译几个词个句子进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录[汉译英]各位高手 来帮下忙 翻译几个

2025年9月2日 22:00

社会工作数据库是什么(当前社会工作数据库主要用什么)

社会工作数据库是什么(当前社会工作数据库主要用什么)

大家好,如果您还对社会工作数据库是什么不太了解,没有关系,今天就由本站为大家分享社会工作数据库是什么的知识,包括当前社会工作数据库主要用什么的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录当前社会工作数据库主要用什

2025年10月5日 21:15

bootstrap软件下载(网页动态设计软件)

bootstrap软件下载(网页动态设计软件)

大家好,今天小编来为大家解答以下的问题,关于bootstrap软件下载,网页动态设计软件这个很多人还不知道,现在让我们一起来看看吧!本文目录网页动态设计软件越狱手机怎么安装不了rocketbootstrapweb前端用哪个软件比较好npm下

2026年5月28日 23:30

实体转jsonobject(如何实现实体与json的转化)

实体转jsonobject(如何实现实体与json的转化)

本篇文章给大家谈谈实体转jsonobject,以及如何实现实体与json的转化对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录如何实现实体与

2025年7月26日 07:45

conclude用法及例句(conclude的用法)

conclude用法及例句(conclude的用法)

各位老铁们好,相信很多人对conclude用法及例句都不是特别的了解,因此呢,今天就来为大家分享下关于conclude用法及例句以及conclude的用法的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录concl

2026年1月8日 15:00

headache 中文翻译(翻译成中文 1.have a toothache 2.have an earache3.have a cold)

headache 中文翻译(翻译成中文 1.have a toothache 2.have an earache3.have a cold)

“headache 中文翻译”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看headache 中文翻译(翻译成中文 1.have a toothache 2.have an earache3.have a cold)!本文目

2025年12月17日 10:15

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索