云影随风 联系方式:   08:00~18:00   MSN:cloudshadow.hjy@gmail.com   19:00~24:00   QQ:357042845

为了能让身边的人
更加的快乐,
自己必须变得更强…
天空无时无刻
不染着悲伤的颜色,
那是无限的蓝,
伤感的蓝……




Can I???

Maybe I can't....



最后彼此什么都没留下

记忆最终也将随时间

而消逝……





日历
网志分类
· 所有网志 (113)
· 心情 (70)
· 随聊 (30)
· 故事 (10)
· 未分类 (3)
站内搜索
友情链接
· 我的QZONE
· 网络安全

订阅 RSS

Nutrisystem

歪酷博客

« 上一篇: 错误指摘 下一篇: 现实的残酷 »
云影随风 @ 2008-10-08 19:27

(已更新,见红字)

由于上班太无聊,某人看我闲的慌让我用JS写一个网页计算器。
反正闲着也是闲着,就写了下。
以下是源码,欢迎搜索到的人测试使用并告诉我BUG,我会修改。
说明:简单的计算器,尚未添加小数点的输入(预计明后天添加完成)
保存以下代码到文本文档,改后缀名txt为HTML即可使用,也可插入博客。

-----------------------------------------------不要复制虚线--------------------------------------
 <HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <script   language=javascript>
  var temp1=0;
  var temp2=0;
  var cond="";
  var i=0;
  var flag=0;
  var aflag=0;
  var sflag=0;
  var last=0;

  function   addval(aa) 
  { 
    if(flag==1){
        document.form1.target.value="";
    }
    if(document.form1.target.value==0&&aa==0){
        document.form1.target.value=aa;
    }else if(document.form1.target.value==0&&aa!=0){
        document.form1.target.value=aa;
    }else{
         document.form1.target.value=document.form1.target.value+aa;
       
    }
        flag=0;
        aflag=0;
        sflag=0;
  } 
 
  function   add(bb) 
  {
 
    if(aflag!=1){
        if(i!=0){
            flag=1;
            if(cond==" + "){
                temp1=parseFloat(temp1)+parseFloat(document.form1.target.value);
            }
            if(cond==" - "){
                temp1=parseFloat(temp1)-parseFloat(document.form1.target.value);
            }
            if(cond==" x "){
                temp1=parseFloat(temp1)*parseFloat(document.form1.target.value);
            }
            if(cond==" / "){
                temp1=parseFloat(temp1)/parseFloat(document.form1.target.value);
            }
            cond=bb;
        }
        if(i==0){
            flag=1;
            temp1=parseFloat(document.form1.target.value);
            cond=bb;
        }
    }else{
        flag=1;
        cond=bb;
    }
   
    i=i+1;
    aflag=1;
    sflag=0;
   
 
  } 
 
  function   sum() 
  {
        if(sflag!=0){
            temp2=last;
        }else{
            temp2=document.form1.target.value;
            last=document.form1.target.value;
        }
       
        if(cond==" + "){
            document.form1.target.value=parseFloat(temp1)+parseFloat(temp2);
            temp1=parseFloat(temp1)+parseFloat(temp2);
        }
        if(cond==" - "){
            document.form1.target.value=parseFloat(temp1)-parseFloat(temp2);
            temp1=parseFloat(temp1)-parseFloat(temp2);
        }
        if(cond==" x "){
            document.form1.target.value=parseFloat(temp1)*parseFloat(temp2);
            temp1=parseFloat(temp1)*parseFloat(document.form1.target.value);
        }
        if(cond==" / "){
            document.form1.target.value=parseFloat(temp1)/parseFloat(temp2);
            temp1=parseFloat(temp1)/parseFloat(document.form1.target.value);
        }
        i=0;
        flag=1;
        sflag=sflag+1;
 
  } 
 
  function   cle() 
  { 
  document.form1.target.value=0;
  temp1=0;
  temp2=0;
  i=0;
  } 
  </script>
 
 </HEAD>

 <BODY>
 
 <form   name="form1"   method="post"   action=""> 
 <TABLE>
 
 <TR>
    <TD colspan="4"><input type="text" name="target" value="0"></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
 </TR>
 <TR>
    <TD><input type="button" value=1 onclick=addval(this.value)></TD>
    <TD><input type="button" value=2 onclick=addval(this.value)></TD>
    <TD><input type="button" value=3 onclick=addval(this.value)></TD>
    <TD><input type="button" value=" + " name="_do" onclick=add(this.value)></TD>
 </TR>
 <TR>
    <TD><input type="button" value=4 onclick=addval(this.value)></TD>
    <TD><input type="button" value=5 onclick=addval(this.value)></TD>
    <TD><input type="button" value=6 onclick=addval(this.value)></TD>
    <TD><input type="button" value=" - " name="_do" onclick=add(this.value)></TD>
 </TR>
 <TR>
    <TD><input type="button" value=7 onclick=addval(this.value)></TD>
    <TD><input type="button" value=8 onclick=addval(this.value)></TD>
    <TD><input type="button" value=9 onclick=addval(this.value)></TD>
    <TD><input type="button" value=" x " name="_do" onclick=add(this.value)></TD>
 </TR>
 <TR>
    <TD><input type="button" value=" c " onclick=cle()></TD>
    <TD><input type="button" value=0 onclick=addval(this.value)></TD>
    <TD><input type="button" value=" = " onclick=sum()></TD>
    <TD><input type="button" value=" / " name="_do" onclick=add(this.value)></TD>
 </TR>
 
 </TABLE>
 </form>
 </BODY>
</HTML>
--------------------------------------------------
不要复制虚线-----------------------------------------------

有好的意见或者建议可以提出,只要在能力范围内就会改进。
明天去公司完成那小数点功能,貌似增加这个功能代码复杂度会上升好多。



以下为添加小数点输入功能的新版本。
说明:今天添加小数点功能时感觉并不是很难,考虑些异常情况
           增加字符转换浮点的功能就可以了。但是JS中处理FLOAT
           时有个精度的BUG,我已经处理了一下,但是在某些情况
           下还是会出现细微的精度误差,大家谅解。

性能不足:当你输入8 X (-1) = 时,计算结果将会是7。这是因为
                   没能处理乘号和除号之后的负数,因为之前写的方法
                   是当连续输入符号时,后一个运算符将覆盖前一个。
                   今天尝试了2小时没解决,暂时先告一段落。

最后: 除去以上指出的BUG外,欢迎使用后告诉我那些我没测试
            出来的BUG,谢谢。

(希望高手可以来完善其他功能)




----------------------------------------我是分割线  不要复制--------------------------------------------
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <script   language=javascript>
  var temp1=0;
  var temp2=0;
  var cond="";
  var i=0;
  var flag=0;
  var aflag=0;
  var sflag=0;
  var last=0;
  var dflag=0;

  function   addval(aa) 
  { 
    if(aa=="."){
        dflag=dflag+1;
    }
   

    if(flag==1){
        document.form1.target.value="";
    }

    if(document.form1.target.value==0&&aa==0&&dflag==0){
        document.form1.target.value=aa;
    }
    else if(document.form1.target.value==0&&aa=="."&&dflag==1){
        document.form1.target.value=document.form1.target.value+aa;
    }
    //else if(document.form1.target.value==0&&dflag==0&&aa!=0){
    //    document.form1.target.value=0;
    //}
    else if(dflag!=1&&dflag!=0&&aa=="."){
        document.form1.target.value=document.form1.target.value;
    }else if(document.form1.target.value==0&&aa!=0&&aa!="."&&dflag==0){
        document.form1.target.value=aa;
    }else{
         document.form1.target.value=document.form1.target.value+aa;
       
    }
        flag=0;
        aflag=0;
        sflag=0;
       
  } 
 
  function   add(bb) 
  {
    if(document.form1.target.value=="0."){
        document.form1.target.value="0"
    }
    if(aflag!=1){
        if(i!=0){
            flag=1;
            if(cond==" + "){
                temp1=parseFloat(temp1)+parseFloat(document.form1.target.value);
                temp1.toFixed(2);
            }
            if(cond==" - "){
                temp1=parseFloat(temp1)-parseFloat(document.form1.target.value);
                temp1.toFixed(2);
            }
            if(cond==" x "){
                temp1=parseFloat(temp1)*parseFloat(document.form1.target.value);
                temp1.toFixed(2);
            }
            if(cond==" / "){
                temp1=parseFloat(temp1)/parseFloat(document.form1.target.value);
                temp1.toFixed(2);
            }
            cond=bb;
        }
        if(i==0){
            flag=1;
            temp1=parseFloat(document.form1.target.value);
            cond=bb;
        }
    }else{
        flag=1;
        cond=bb;
    }
   
    i=i+1;
    aflag=1;
    sflag=0;
    dflag=0;
 
  } 
 
  function   sum() 
  {
        if(sflag!=0){
            temp2=last;
        }else{
            temp2=document.form1.target.value;
            last=document.form1.target.value;
        }
       
        if(cond==" + "){
            document.form1.target.value=parseFloat(temp1)+parseFloat(temp2);
            temp1=parseFloat(temp1)+parseFloat(temp2);
        }
        if(cond==" - "){
            document.form1.target.value=parseFloat(temp1)-parseFloat(temp2);
            temp1=parseFloat(temp1)-parseFloat(temp2);
        }
        if(cond==" x "){
            document.form1.target.value=parseFloat(temp1)*parseFloat(temp2);
            temp1=parseFloat(temp1)*parseFloat(document.form1.target.value);
        }
        if(cond==" / "){
            document.form1.target.value=parseFloat(temp1)/parseFloat(temp2);
            temp1=parseFloat(temp1)/parseFloat(document.form1.target.value);
        }
        i=0;
        flag=1;
        sflag=sflag+1;
 
  } 
 
  function   cle() 
  { 
  document.form1.target.value=0;
  temp1=0;
  temp2=0;
  i=0;
  dflag=0;
  } 
  </script>
 
 </HEAD>

 <BODY>
 
 <form   name="form1"   method="post"   action=""> 
 <TABLE>
 
 <TR>
    <TD colspan="4"><input type="text" name="target" value="0"></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
 </TR>
 <TR>
    <TD><input type="button" value=1 onclick=addval(this.value)></TD>
    <TD><input type="button" value=2 onclick=addval(this.value)></TD>
    <TD><input type="button" value=3 onclick=addval(this.value)></TD>
    <TD><input type="button" value=" + " name="_do" onclick=add(this.value)></TD>
 </TR>
 <TR>
    <TD><input type="button" value=4 onclick=addval(this.value)></TD>
    <TD><input type="button" value=5 onclick=addval(this.value)></TD>
    <TD><input type="button" value=6 onclick=addval(this.value)></TD>
    <TD><input type="button" value=" - " name="_do" onclick=add(this.value)></TD>
 </TR>
 <TR>
    <TD><input type="button" value=7 onclick=addval(this.value)></TD>
    <TD><input type="button" value=8 onclick=addval(this.value)></TD>
    <TD><input type="button" value=9 onclick=addval(this.value)></TD>
    <TD><input type="button" value=" x " name="_do" onclick=add(this.value)></TD>
 </TR>
 <TR>
    <TD><input type="button" value=" c " onclick=cle()></TD>
    <TD><input type="button" value=0 onclick=addval(this.value)></TD>
    <TD><input type="button" value="." onclick=addval(this.value)></TD>
    <TD><input type="button" value=" / " name="_do" onclick=add(this.value)></TD>
 </TR>
 <TR>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD><input type="button" value=" = " onclick=sum()></TD>
 </TR>
 </TABLE>
 </form>
 </BODY>
</HTML>

----------------------------------------我是分割线  不要复制--------------------------------------------




评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定