计算器退格按钮

问题描述

我试图弄清楚我的代码出了什么问题,因为当我尝试删除一个数字时,它最初会被删除,但是当我单击另一个数字时,它又在显示屏上再次显示,就好像它未被删除一样。我已经尝试了所有我知道的东西,但是没有用!

function backspace() {
  var number1 = document.getElementById("display").value
  var number1 = (document.getElementById("display").value = number1.substr(
    0,number1.length - 1
  ))
  refresh()
}

function refresh() {
  document.getElementById("display").value = number1
}

谢谢!

解决方法

您需要使用:

function backspace() {
  var number1 = document.getElementById("display").value;
  number1 = number1.substring(0,number1.length - 1);
  refresh()
}

---或---

function backspace() {
  var number1 = document.getElementById("display").value;
  number1 = number1.slice(0,-1);
  refresh()
}

来源:https://tecadmin.net/remove-last-character-from-string-in-javascript/

,

number1已更改,但不在功能refresh

的范围内

代码需要重构并明确选择变量名。

范围

代码遇到范围问题

function backspace() {
    var number1 = something //declared here
}
function refresh() {
   //number1 is not accessible here :(
}

两次声明相同的变量

var number1 =.....
var number1 =......

请始终使用let而不是var:)

良好的变量选择

number1作为所有变量的名称是一个非常糟糕的主意。

一种更好的方法如下:

function backspace(){
    let displayValue = .....
    let changedValue = .....
}

一旦更改了变量名,您可能会注意到您实际上并没有修改“真实”数字,而只是在DOM(或HTML)中修改了值

,

尝试这种形状

function backspace() {
  var number1 = document.getElementById("display").value

  number1 = number1.slice(0,-1))
}

function refresh() {
backspace()
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...