array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Javascript计算器 - 爱码网
nanxi-zwj

这两天写了个js的计算器,分为简单版本和复杂版本,以此留记。

简单版本:

HTML部分:

 

<fieldset>
        <legend>Calculate By nanxI</legend>
        <div>
        第一个数:<input type="text" name="num" value="" />
        </div>
        第二个数:<input type="text" name="num" value="" />
        <div id="btn">
        <span id="fh">算式符号:</span>
        <button id="jia" >+</button>
        <button id="jian" >-</button>
        <button id="cheng" >×</button>
        <button id="chu" >÷</button>
        </div>
        结果:<input type="text" name="num" value="" class="jieguo"/>
    </fieldset>

 

CSS部分:

 

fieldset{
    width:250px;
    margin: 0 auto;
    height: 250px;
}
input{
    width: 100px;
    margin-top: 20px;
    height: 25px;
    line-height: 25px;
    font-size: 18px;
    margin-left: 10px;
    margin-right: 10px;
}
select{
    height: 30px;
    line-height: 30px;
    width: 50px;
    font-size: 18px;
    color:#ff4387;
}
button{
    width: 30px;
    height: 30px;
    background: none;
    display: inline-block;
    position: relative;
    bottom: 1px;
    left:90px;
    top:10px;
}
#btn{
    position: relative;
}
#fh{
    display: inline-block;
    position: absolute;
    top:15px;
}
.jieguo{
    position: relative;
    left: 33px;
}

 

JS部分:

function cal(){
    var num=document.getElementsByName(\'num\');
    var select=document.getElementsByTagName(\'option\');
    var z;
    var btn=document.getElementById(\'get\');
    var jia=document.getElementById(\'jia\');
    var jian=document.getElementById(\'jian\');
    var cheng=document.getElementById(\'cheng\');
    var chu    =document.getElementById(\'chu\');
    jia.onclick = function jia(){
        var x=num[0].value;
        var y=num[1].value;
        z = Number(x) + Number(y);
        num[2].value = z;
    }
    jian.onclick = function jian(){
        var x=num[0].value;
        var y=num[1].value;
        z = Number(x) - Number(y);
        num[2].value = z;
    }
    cheng.onclick = function cheng(){
        var x=num[0].value;
        var y=num[1].value;
        z = Number(x) * Number(y);
        num[2].value = z;
    }
    chu.onclick = function chu(){
        var x=num[0].value;
        var y=num[1].value;
        z = Number(x) / Number(y);
        num[2].value = z;
    }

}
cal();

效果图:

 

 

复杂版本:

HTML代码:

<div id="complex">
    <div id="calcu-screen">
    <input type="text" name="numScreen" class="screen" value="0" onfocus="this.blur();" /> 
    </div> 
    <table id="suanpan" cellspacing="0">
        <tr class="graybgc">
            <td style="color:#FF4500" onclick="clearscreen()">AC</td>
            <td style="color:#FF4500" onclick="del();"></td>
            <td onclick="persent()">%</td>
            <td class="bgcg" onclick="divide()">÷</td>
        </tr>
        <tr>
            <td onclick="jisuan(7);">7</td>
            <td onclick="jisuan(8);">8</td>
            <td onclick="jisuan(9);">9</td>
            <td class="bgcg" onclick="times()">×</td>
        </tr>
        <tr>
            <td onclick="jisuan(4);">4</td>
            <td onclick="jisuan(5);">5</td>
            <td onclick="jisuan(6);">6</td>
            <td class="bgcg" onclick="minus()">-</td>
        </tr>
        <tr>
            <td onclick="jisuan(1);">1</td>
            <td onclick="jisuan(2);">2</td>
            <td onclick="jisuan(3);">3</td>
            <td class="bgcg" onclick="plus()">+</td>
        </tr>
        <tr>
            <td onclick="jisuan(0);">0</td>
            <td onclick="dzero()">00</td>
            <td onclick="dot()">.</td>
            <td class="bgcg" onclick="equal()">=</td>
        </tr>
    </table>
</div>

 

CSS代码:

 

 

#suanpan{
    border-top: 1px solid #f8f8f8;
    border-left: 1px solid #f8f8f8;
}
#suanpan td{
    border-right: 1px solid #f8f8f8;
    border-bottom: 1px solid #f8f8f8;
    margin:0;
    text-align: center;
    width: 40px;
    height: 40px;
    font-weight: "微软雅黑";
    cursor: pointer;
}
.bgcg{
    background: #f1f1f1;
}
.graybgc{
    background: #f1f1f1;
}
#suanpan td:hover{
    background: #f6f6f6;
}
#suanpan td:active{
    background: #C0C0C0;
}
.screen{
    min-height: 20px;
    width: 169px;
    background: #f5f5f5;
    text-align: right;
    overflow: hidden;
    margin:0;
}
#calcu-screen{
    max-height: 40px;
    font-weight: bold;
    font-family: "微软雅黑";
    font-size: 18px;
    max-width: 160px;
    word-break: break-all;
    margin:0;
}
#complex{
    margin: 0 auto;
    width: 250px;
    margin-top: 50px;
}

 

JS代码:

var i;
var conduct = document.getElementById(\'conduct\');
var num = 0,
    result = 0,
    numshow = "0";
var operate = 0; //判断输入状态的标志 0,1 0为可以连续输入状态 1为重新输入状态
var calcul = 0; //判断计算状态的标志 
var calculator = document.getElementsByClassName(\'screen\');

function jisuan(num) {
    var str = String(calculator[0].value); //获得当前显示数据 
    str = (str != "0") ? ((operate == 0) ? str : "") : ""; 
    //如果当前值不是"0",且状态为0,则返回当前值,否则返回空值; 
    str = str + String(num); //给当前值追加字符 
    calculator[0].value = str;
    operate = 0; //重置输入状态  
}

function del() { //退格 
    var str = String(calculator[0].value);
    str = (str != "0") ? str : "";
    str = str.substr(0, str.length - 1);
    str = (str != "") ? str : "0";
    calculator[0].value = str;
}

function clearscreen() { //清除数据 
    num = 0;
    result = 0;
    numshow = "0";
    calculator[0].value = "0";
}
function dot(){ 
var str=String(calculator[0].value); 
str=(str!="0") ? ((operate==0) ? str : "0") : "0"; //如果当前值不是"0",且状态为0,则返回当前值,否则返回"0"; 
for(i=0; i<=str.length;i++){ //判断是否已经有一个点号 
if(str.substr(i,1)==".") return false; //如果有则不再插入 
} 
str=str + "."; 
calculator[0].value=str; 
operate=0; 
}
function dzero(){
    var str=String(calculator[0].value); 
str=(str!="0") ? ((operate==0) ? str : "0") : "0"; //如果当前值不是"0",且状态为0,则返回当前值,否则返回"0"; 
str=str+"00";
calculator[0].value =str;
operate = 0;
}
function plus() { //加法 
    calculate(); //调用计算函数 
    operate = 1; //更改输入状态 
    calcul = 1; //更改计算状态为加 
}

function minus() { //减法 
    calculate();
    operate = 1;
    calcul = 2;
}

function times() { //乘法 
    calculate();
    operate = 1;
    calcul = 3;
}

function divide() { //除法 
    calculate();
    operate = 1;
    calcul = 4;
}

function persent() { //求余 
    calculate();
    operate = 1;
    calcul = 5;
}

function equal() {
    calculate(); //等于 
    operate = 1;
    num = 0; //初始化
    result = 0; //初始化
    numshow = "0"; //初始化
}

function calculate() {
    numshow = Number(calculator[0].value);
    if (num != 0) { //判断前一个运算数是否为零 
        switch (calcul) { //判断要输入状态 
            case 1:
                result = num + numshow;
                break; //计算"+" 
            case 2:
                result = num - numshow;
                break; //计算"-" 
            case 3:
                result = num * numshow;
                break;
            case 4:
                result = num / numshow;
                break;
            case 5:
                result = num % numshow;
                break;
        }
    } else {
        result = numshow;
    }
    numshow = String(result);
    calculator[0].value = numshow;
    num = result; //存储当前值 
}

 

效果图:

 

 

第二个复杂版本参考了 另一位大牛的 代码。

对于切换模式 对于JS来说我认为是一个很好的方法。

对于 ? :运算符也很有用。

记录在此。

分类:

技术点:

相关文章: