老师布置的任务,弄了一天,总算把代码搞出来了,作为菜鸟给自己一点小掌声,传说中JS是很简单的,但是要写出一个程序真的很需要锻炼,我的锻炼实在是太少了,天天DOTA中。呵呵(做了些小注释)大家应该能看懂吧(没注释的程序我不喜欢)

希望看过的人给点建议。另外eval_r改为eval,共4处(不知道为什么保存后会出现这种情况)

<html>
<head>
<title>网页计算器byWillikan</title>
  <meta name="Willikan">
</head>
<body>
<script language="JavaScript">
<!-- Hide the script from old browsers --
var A=""  //存放第一操作数
var B=""  //存放第二操作数
var X=""  //存放符号
var C=""  //存放结果
var i=0    //判断是第几个操作数
var j=0   //判断第一操作数是否先前的结果
var k=0  //判断等于号运算规则
var l=0 //第二操作数前的置0标志
function enter(obj,string)//输入字符方法
{if(j==1&&l==1)  //根据J值判定结果作为第一操作数,清空输入第二操作数
 {obj.expr.value=""}
 if(i==0)  //根据i值判定输入的是第一操作数
   {obj.expr.value += string
     A=0
     j=0
   }
 else //否则是第二操作数,清空输入
    {
      obj.expr.value=obj.expr.value+string
      B=obj.expr.value
      A=A+string
      l=0
    }
}

function enterS(obj,string)//符号输入函数"+-*/%"
{A=obj.expr.value //A获得第一操作数
      A+=string  //A再获得符号
      X=string  //X获得符号
      i=1  //改变后标志其后的操作数必为第二操作数
      j=1 //结果为第一操作数
      k=1//继续使用X和第二操作数的标志。一直按'"="的情况
      l=1
}

function enterS1(obj)//符号为开根号的函数
{A=obj.expr.value
  var t=Math.sqrt(parseInt(A))
  obj.expr.value=t
 }

function enterS2(obj)//符号为平方的函数
{A=obj.expr.value
  var t=Math.pow(parseInt(A),2)
 obj.expr.value=t
}

function enterS3(obj)//解决正负号的函数
{A=obj.expr.value
  var t=0-parseInt(A)
 obj.expr.value=t
}

function enterS4(obj)//C退格的使用

{var a=obj.expr.value.split("")

obj.expr.value=""

for(var i=0;i<a.length-1;i++)

{obj.expr.value+=a[i]}
}

function compute(obj)//等于号的执行
   {if(k==0)
      {A=C+X+B
        obj.expr.value=eval_r(A)//eval函数直接将字符窜进行数值化计算
        C=eval_r(A)
        }
    else
       {obj.expr.value = eval_r(A)
        C=eval_r(A)
        k=0
      }
    }

function clearP(obj) //清空函数,用于C或CE
   { obj.expr.value = ""
      i=0
      j=0
      k=0
   }

</script>
<center>
<form name="calc">
<table border=1 algin="center">

<tr><td colspan=3><input type="text" name="expr" size=30 action="compute(this.form)">
<td><input type="button" value="  C  "  onClick="enterS4(this.form)">
<td><input type="button" value="   CE  " onClick="clearP(this.form)">

<tr><td><input type="button" value="  7  " onClick="enter(this.form, '7')">
<td><input type="button" value="  8  " onClick="enter(this.form, '8')">
<td><input type="button" value="  9  " onClick="enter(this.form, '9')">
<td><input type="button" value="  /  "  onClick="enterS(this.form, '/')">
<td><input type="button" value=" sqrt  " onClick="enterS1(this.form)">

<tr><td><input type="button" value="  4  " onClick="enter(this.form, '4')">
<td><input type="button" value="  5  " onClick="enter(this.form, '5')">
<td><input type="button" value="  6  " onClick="enter(this.form, '6')">
<td><input type="button" value="  *  " onClick="enterS(this.form, '*')">
<td><input type="button" value="  sqr  " onClick="enterS2(this.form)">

<tr><td><input type="button" value="  1  " onClick="enter(this.form, '1')">
<td><input type="button" value="  2  " onClick="enter(this.form, '2')">
<td><input type="button" value="  3  " onClick="enter(this.form, '3')">
<td><input type="button" value="  -  " onClick="enterS(this.form, '-')">
<td><input type="button" value="   %   " onClick="enterS(this.form, '%')">

<tr><td><input type="button" value="  0  "  onClick="enter(this.form, '0')">
<td><input type="button" value=" +/- " onClick="enterS3(this.form)">
<td><input type="button" value="  .  "onClick="enter(this.form, '.')">
<td><input type="button" value="  +  " onClick="enterS(this.form, '+')">
<td><input type="button" value="   =   " onClick="compute(this.form)">

</table>

</form>
</center>
</body>
</html>

用javascript编写的简单计算器的更多相关文章

  1. javascript编写一个简单的编译器(理解抽象语法树AST)

    javascript编写一个简单的编译器(理解抽象语法树AST) 编译器 是一种接收一段代码,然后把它转成一些其他一种机制.我们现在来做一个在一张纸上画出一条线,那么我们画出一条线需要定义的条件如下: ...

  2. 《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》

    Application和Java Applet的区别.Java语言是一种半编译半解释的语言.Java的用户程序分为两类:Java Application和Java Applet.这两类程序在组成结构和 ...

  3. 用javascript编写一个简单的随机验证码程序

    简单模拟网页的随机数字验证码,效果图如下: html代码: <div id="content"> <div class="left"> ...

  4. js编写当天简单日历

    之前一直很想用javascript写一个日历,但是因为完全没有好的思路, 所以迟迟没有尝试.最近在网上刚好看到用javascript编写的简单日历的例子,代码量虽然不大, 但是我觉得很好地阐述了js日 ...

  5. javascript简单计算器实践

    参考部分资料,编写一个简单的计算器案例,虽然完成了正常需求,但是也有不满之处,待后续实力提升后再来补充,先把不足之处列出: 1:本来打算只要打开页面,计算器的输入框会显示一个默认为0的状态,但是在输入 ...

  6. JavaScript编写计算器的发展史

    JavaScript编写计算器的发展史: 编写一个普通的四则运算: <!DOCTYPE html> <html lang="en"> <head> ...

  7. 1.C#WinForm基础制作简单计算器

    利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...

  8. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  9. hiho #1332 : 简单计算器 栈+递归

    #1332 : 简单计算器 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 编写一个程序可以完成基本的带括号的四则运算.其中除法(/)是整除,并且在负数除法时向0取整.( ...

随机推荐

  1. Android 多国语言

    参考android 开发文档,  ISO 639-1  ISO 3166-1-alpha-2 关于中国的: 中国其他地区: https://en.wikipedia.org/wiki/ISO_3166 ...

  2. linux下配置Apache基于加密的认证访问

    1.首先要确认安装了 mod_ssl模块 我的机器是centos是系统,执行下面命令 yum install -y mod_ssl 2.用openssl工具生成密钥,证书请求文件,证书 在/usr/l ...

  3. (IIS8/8.5/Apache)301域名重定向

    用Apache的.htaccess来做301域名转向1.开启apache支持.htaccess,方法:在Apache的配置文件httpd.conf中,找到<Directory />    ...

  4. 基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏

    function orient() {if (window.orientation == 90 || window.orientation == -90) {//ipad.iphone竖屏:Andri ...

  5. Mysql主从同步(复制)

    目录: mysql主从同步定义      主从同步机制 配置主从同步      配置主服务器      配置从服务器 使用主从同步来备份      使用mysqldump来备份      备份原始文件 ...

  6. opencv初体验

    http://guoming.me/opencv-config  这篇文章有讲解opencv的安装与配置 一些常用库 opencv_core249d.lib opencv_imgproc249d.li ...

  7. iOS开发 适配iOS10以及Xcode8-b

    现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本, ...

  8. iOS Core data多线程并发访问的问题

    大家都知道Core data本身并不是一个并发安全的架构:不过针对多线程访问带来的问题,Apple给出了很多指导:同时很多第三方的开发者也贡献了很多解决方法.不过最近碰到的一个问题很奇怪,觉得有一定的 ...

  9. spring mvc 学习笔记【1】---前言

    扎扎实实地掌握好技术 ----------------------------------------------------------------------------------------- ...

  10. 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

    // test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...