var Calculator = { init: function () { var that = this; if (!that.isInited) { that.isInited = true; // 保存操作信息 // total: Number, 总的结果 // next: String, 下一个和 total 进行运算的数据 // action: String, 操作符号 that.data = { total: 0, next: "", action: "" }; that.bindEvent(); } }, bindEvent: function () { var that = this; // 请补充代码:获取 .cal-keyboard 元素 var keyboardEl = document.querySelector(".cal-keyboard"); keyboardEl && keyboardEl.addEventListener("click", function (event) { // 请补充代码:获取当前点击的dom元素 var target = event.target; // 请补充代码:获取target的 data-action 值 var action = target.getAttribute("data-action"); // 请补充代码:获取target的内容 var value = target.innerText; if (action === "num" || action === "operator") { that.result(value, action === "num"); } }); }, result: function (action, isNum) { console.log(action, isNum); var that = this; var data = that.data; if (isNum) { data.next = data.next === "0" ? action : data.next + action; !data.action && (data.total = 0); } else if (action === "清空") { // 请补充代码:设置清空时的对应状态 data.total = 0; data.next = ""; data.action = ""; } else if (action === "=") { if (data.next || data.action) { data.total = that.calculate(data.total, data.next, data.action); data.next = ""; data.action = ""; } } else if (!data.next) { data.action = action; } else if (data.action) { data.total = that.calculate(data.total, data.next, data.action); data.next = ""; data.action = action; } else { data.total = +data.next || 0; data.next = ""; data.action = action; } // ���补充代码:获取 .origin-value 元素 var valEl = document.querySelector(".origin-value"); valEl && (valEl.innerHTML = data.next || data.total || "0"); }, calculate: function (n1, n2, operator) { console.log(n1, n2); n1 = +n1 || 0; n2 = +n2 || 0; if (operator === "÷") { // 请补充代码:获取除法的结果 let result = n1 / n2; if (n2 === 0) { result = 0; } else { if ( result.toString().split(".")[1] && result.toString().split(".")[1].length > 2 ) { result = result.toFixed(2); } } return Number(result); } else if (operator === "x") { // 请补充代码:获取乘法的结果 let result = n1 * n2; console.log(result.toString().split(".")); if ( result.toString().split(".")[1] && result.toString().split(".")[1].length > 2 ) { result = result.toFixed(2); } return Number(result); } else if (operator === "+") { // 请补充代码:获取加法的结果 let result = n1 + n2; console.log(result.toString().split(".")); if ( result.toString().split(".")[1] && result.toString().split(".")[1].length > 2 ) { result = result.toFixed(2); while ( result.includes(".") && (result.endsWith(".") || result.endsWith("0")) ) { result = result.slice(0, -1); } } return Number(result); } else if (operator === "-") { // 请补充代码:获取减法的结果 let result = n1 - n2; console.log(result.toString().split(".")); if ( result.toString().split(".")[1] && result.toString().split(".")[1].length > 2 ) { result = result.toFixed(2); while ( result.includes(".") && (result.endsWith(".") || result.endsWith("0")) ) { result = result.slice(0, -1); } } return Number(result); } }, };