1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| <!DOCTYPE html> <html>
<head> <title> 事件</title> </head>
<body> <input type='text' id='num1' /> <select id='operate'> <option value='+'>+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> <input type='text' id='num2' /> <input type='button' value=' = ' onclick="count()" /> <input type='text' id='result' />
<script type="text/javascript"> (function count() { /*此处写代码*/ /* calculator对象里含有以下属性: num1:第一个输入框 num2第二个输入框 result:结果输出框 operator:运算符下拉框 btn:=按钮 option:下拉框中的每个运算符
*/ var calculator = { num1: document.querySelector("#num1"), num2: document.querySelector("#num2"), result: document.querySelector("#result"), operator: document.querySelector("#operate"), btn: document.querySelector("input[type=button]"), option: null, };
// 给每个运算符命名add,subtract,multiply,divide (function () { calculator.option = calculator.operator.querySelectorAll("option"); calculator.option[0].setAttribute("title", "add"); calculator.option[1].setAttribute("title", "subtract"); calculator.option[2].setAttribute("title", "multiply"); calculator.option[3].setAttribute("title", "divide"); })();
// 点击=按钮时,调用operate函数,计算出结果并调用outputResult函数输出结果 calculator.btn.onclick = function () { var index = calculator.operator.selectedIndex;//当前选中select的index outputResult(operate(calculator.option[index].title, calculator.num1, calculator.num2)); } // 操作函数自执行,里面的operation是算术运算,可以调用addOperation来增加运算,operate函数执行参数传递和结果运算 var operate = (function () { var operation = { add: function (num1, num2) { return +num1.value + +num2.value; }, subtract: function (num1, num2) { return num1.value - num2.value; }, multiply: function (num1, num2) { return num1.value * num2.value; }, divide: function (num1, num2) { return num1.value / num2.value; }, addOperation: function (name, fn) { if (!operation[name]) { operation[name] = fn; } return operation; } }
function operate(title) { if (!operation[title]) throw new Error("不存在名为" + title + "的运算方法") return operation[title].apply(operation, [].slice.call(arguments, 1, arguments.length)); }
operate.addOperation = operation.addOperation;//把operateion的addOperation方法赋予operate来给外面调用 return operate; })();
//结果输出 function outputResult(resultNum) { calculator.result.value = resultNum; }
})(); </script> </body>
</html>
|