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