⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6-2 科学计算器.htm

📁 JAVASCRIPT完全自学手册,中源码的验证修订实例
💻 HTM
字号:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312" />
<title>6-2  科学计算器</title>
<!-- 样式表 -->
<style>
* { font-size:12px; } /*规定了所有的字体样式*/
body { background-color:buttonface; border-style:none; } /*窗口主体样式*/
.button { width:50px; height:30px; }/*按钮大小*/
#txt_display { width:100%; cursor:default; text-align:right; }/*显示结果的文本框样式*/
</style>
<!-- 脚本部分 -->
<script>
//将所有按钮的内容存放在数组中
var calc_buttons = [0,1,2,3,4,5,6,7,8,9,".","=","+","-","*","/","AC","sin","sin","cos","tan","asin","acos","atan","ln"];
//用于计算的全局变量
var previous_value=0, op="", start_new_input=true;
//计算的核心函数
function calc(strCMD){
    //获取页面元素:显示结果的文本框
    var objTxt = $("txt_display");
    //根据当前单击的按钮内容决定所需要的操作
    switch(strCMD){
        //如果是三角函数,调用Math对象相应的方法操作
        case "sin": objTxt.value = Math.sin(objTxt.value); break;
        case "cos": objTxt.value = Math.cos(objTxt.value); break;
        case "tan": objTxt.value = Math.tan(objTxt.value); break;
        case "asin": objTxt.value = Math.asin(objTxt.value); break;
        case "acos": objTxt.value = Math.acos(objTxt.value); break;
        case "atan": objTxt.value = Math.atan(objTxt.value); break;
        case "ln": objTxt.value = Math.log(objTxt.value); break;
        //如果是四则运算符,则执行计算
        case "+":
        case "-":
        case "*":
        case "/":
            start_new_input = true;
            if(op!="" && objTxt.value!=""){
                objTxt.value = eval(previous_value + op + objTxt.value);
                op = strCMD;
            }else{
                op = strCMD;
            }
            break;
        case "=":
            start_new_input = true;
            if(op!="" && objTxt!="")objTxt.value = eval(previous_value + op + objTxt.value);
            op = "";
            previous_value = 0;
            break;
        //重置所有变量,恢复初始状态
        case "AC":
            start_new_input = true;
            objTxt.value = "0";
            op = "";
            previous_value = 0;
            break;
        //如果是小数点
        case ".":
            //调用字符串的“indexOf”方法查找,如果当前输入中已经有了小数点则跳出操作
            //注意到本段case块后没有break语句,如果当前输入中没有了小数点,则会执行default块
            if(objTxt.value.indexOf(".")!=-1)break;
        //如果是0-9或小数点
        default:
            //如果需要清空原有输入,则将原有输入保存在变量“previous_value”中
            //并且将“需要清空原有输入”的状态设为“否”(“false”)
            if(start_new_input){
                start_new_input=false;
                previous_value=objTxt.value;
                objTxt.value="0";
            }
            //如果当前输入不是“0”
            if(objTxt.value!="0"){
                objTxt.value += strCMD;
            }else if(strCMD!="0"){
                objTxt.value = strCMD;
            }
    }
}

function write_table(){
    document.write("<table>");
    document.write("<tr>");
    for(var i=0; i<calc_buttons.length; i++){
        document.write("<td><input value=\""+calc_buttons[i]+"\" type=\"button\" class=\"button\" onclick=\"calc(this.value);\"></td>");
        if((i+1)%5==0)document.write("</tr><tr>");
    }
    document.write("</tr>");
    document.write("</table>");
}

function $(str){ return(document.getElementById(str)); }
</script>
</head>
<body style="overflow:auto;">
<input id="txt_display" value="0" readonly >
<script>
write_table();
</script>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -