我目前正在尝试编写一个基本的计算器,但我撞到了一堵墙。我试图在输出上显示多个数字,我确实在 clear() 中将 currentOperand 声明为一个空变量。在 appendNumber() 中,如果我将 this.currentOperand 设置为 number ,它将只显示一位数。建议在 this.currentOperand 中返回一个字符串值以输出多个数字。
JS代码
constructor(previousoperandTextElement, currentoperandTextElement){
this.previousoperandTextElement = previousoperandTextElement
this.currentoperandTextElement = currentoperandTextElement
}
clear(){
this.currentOperand = "";
this.previousOperand = "";
this.operation = undefined;
}
delete(){
}
appendNumber(number){
if(number === "." && this.currentOperand.includes('.')) return
this.currentOperand = this.currentOperand.toString() + number.toString()
console.log(number);
}
chooseOperation(operation){
}
compute(){
}
updateDisplay(){
this.currentoperandTextElement.innerText = this.currentOperand;
}
}
const numberButtons = document.querySelectorAll("[data-number]")
const operationButtons = document.querySelectorAll("[data-operation]")
const deleteButton = document.querySelector("[data-delete]")
const all_clearButton = document.querySelector("[data-all-clear]")
const equalsButton = document.querySelector("[data-equals]")
const previousoperandTextElement = document.querySelector("[data-previous-operand]")
const currentoperandTextElement = document.querySelector("[data-current-operand]")
const calculator = new Calculator(previousoperandTextElement, currentoperandTextElement)
numberButtons.forEach(button => {
button.addEventListener('click', () => {
calculator.appendNumber(button.innerText);
calculator.updateDisplay();
})
})
答案 0 :(得分:1)
当前操作数是否已经不是字符串?因此您无需将其转换为字符串。
所以
this.currentOperand = this.currentOperand + number.toString()
您也可以在转换为字符串之前先在控制台中检查类型,以确定您要转换的内容:
console.log(typeof this.currentOperand);
如果你使用 Typescript,这些事情也会更清楚。
编辑 回过头来看它,变量 number
看起来也是一个字符串。如果它将严格等于“。” - 您正在尝试将包含 .
的字符串转换为已经存在的字符串。