JavaScript實現的計算器

md3c 9年前發布 | 2K 次閱讀 JavaScript

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript計算器</title>
<style type="text/css">
input {
    background-color: #CCC;
    width: 70px;
    height: 40px;
}

table { background-color: #999; border: 3px solid #666; padding: 3px; }

.result { width: 420px; background-color: #999; margin-bottom: 10px; font-family: "微軟雅黑", Verdana, sans-serif, "宋體"; font-size: 14px; color: #FFF; padding-left: 20px; }

.clear { width: 146px; } </style> </head> <script language="JavaScript"> var baseoper; var digitstate; var num1; var operstate;

function setStartState() {
    digitstate = "beempty";
    num1 = 0;
    baseoper = "beempty";
    operstate = false;

}
function add(i) {
    if (operstate) {
        cal.total.value = i;
        operstate = false;
    } else {
        if (cal.total.value == "0") {
            cal.total.value = i;
            digistate = "bein";
        } else
            cal.total.value += i;
    }
}
function cleartext() {
    cal.total.value = "0";
    digitstate = "beempty";
    basestate = "beempty"
}

function count() {
    if (baseoper != "beempty") {
        switch (baseoper) {
        case "+":
            num1 = parseFloat(num1) + parseFloat(cal.total.value);
            break;
        case "-":
            num1 = parseFloat(num1) - parseFloat(cal.total.value);
            break;
        case "*":
            num1 = parseFloat(num1) * parseFloat(cal.total.value);
            break;
        case "/":
            num1 = parseFloat(num1) / parseFloat(cal.total.value);
            break;
        }
        preoper = true;
        cal.total.value = num1;
    }
    baseoper = "beempty";
}
function useFunc(func) {
    switch (func) {
    case "sin":
        cal.total.value = Math.sin(cal.total.value);
        break;
    case "cos":
        cal.total.value = Math.cos(cal.total.value);
        break;
    case "asin":
        cal.total.value = Math.asin(cal.total.value);
        break;
    case "acos":
        cal.total.value = Math.acos(cal.total.value);
        break;
    case "tan":
        cal.total.value = Math.tan(cal.total.value);
        break;
    case "atan":
        cal.total.value = Math.atan(cal.total.value);
        break;
    case "log":
        cal.total.value = Math.log(cal.total.value);
        break;
    case "exp":
        cal.total.value = Math.exp(cal.total.value);
        break;
    case "sqrt":
        cal.total.value = Math.sqrt(cal.total.value);
        break;
    case "1/x":
        cal.total.value = 1 / cal.total.value;
        break;
    }
    operstate = true;
}
function addPoint() {
    if (digitstate == "bein" || digitstate == "beempty") {
        cal.total.value += ".";
        digistate = "befloat";
    }
}
function setOper(oper) {
    operstate = true;
    if (baseoper == "beempty") {
        num1 = 0 + cal.total.value;
        baseoper = oper;
    } else {
        count();
        baseoper = oper;
    }
}

</script> <body onload="setStartState()"> <h2>JavaScript計算器</h2> <form name="cal"> <table cellpadding="0" cellspacing="0"> <tr align="center"> <td colspan="6"><input class="result" type="Text" name="total" size="25" value="0"></td> </tr> <tr align="center"> <td><input type="Button" value="sin" onclick="useFunc('sin')"></td> <td><input type="Button" value="cos" onclick="useFunc('cos')"></td> <td><input type="Button" value="1" onclick="add('1')"></td> <td><input type="Button" value="2" onclick="add('2')"></td> <td><input type="Button" value="3" onclick="add('3')"></td> <td><input type="Button" value="+" onclick="setOper('+')"></td> </tr> <tr align="center"> <td><input type="Button" value="asin" onclick="useFunc('asin')"></td> <td><input type="Button" value="acos" onclick="useFunc('acos')"></td> <td><input type="Button" value="4" onclick="add('4')"></td> <td><input type="Button" value="5" onclick="add('5')"></td> <td><input type="Button" value="6" onclick="add('6')"></td> <td><input type="Button" value="-" onclick="setOper('-')"></td> </tr> <tr align="center"> <td><input type="Button" value="tan" onclick="useFunc('tan')"></td> <td><input type="Button" value="atan" onclick="useFunc('atan')"></td> <td><input type="Button" value="7" onclick="add('7')"></td> <td><input type="Button" value="8" onclick="add('8')"></td> <td><input type="Button" value="9" onclick="add('9')"></td> <td><input type="Button" value="x" onclick="setOper('*')"></td> </tr> <tr align="center"> <td><input type="Button" value="log" onclick="useFunc('log')"></td> <td><input type="Button" value="exp" onclick="useFunc('exp')"></td> <td><input type="Button" value="0" onclick="add('0')"></td> <td><input type="Button" value="." onclick="addPoint()"></td> <td><input type="Button" value="c" onclick="cleartext()"></td> <td><input type="Button" value="÷" onclick="setOper('/')"></td> </tr> <tr align="center"> <td><input type="Button" value="sqrt" onclick="useFunc('sqrt')"> <td><input type="Button" value="1/x" onclick="useFunc('1/x')"> <td><input type="Button" value="pi" onclick="cal.total.value=Math.PI"></td> <td><input type="Button" value="E" onclick="cal.total.value=Math.E"></td> <td colspan=2><input class="clear" type="Button" value="=" onclick="count()"></td> </tr> </table> </form> </body> </html></pre>

 本文由用戶 md3c 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!