javascript - JavaScript 中的子字符串截断了超出应有的内容
问题描述
我对 JavaScript 还很陌生,但今天我偶然发现了一个奇怪的问题,如果有人能为我提供一些启示,我将不胜感激。
我正在开发 HTML 中的计算器。我在 js 中有一个函数用于 div 上的 onclick 事件。该 div 的作用类似于具有以下代码的退格按钮:
function remove() {
var input = document.getElementById("input");
input.innerHTML = input.innerHTML.substring(0, input.innerText.length - 1);
// Check if comma exists
if (input.innerHTML.indexOf(",") == -1) {
comma = false;
}
}
它从我的段落的 innerHTML 中删除最后添加的数字,就像它应该的那样。但是,在以下函数中执行完全相同的操作会以某种方式从段落中删除两个字符,而不是一个:
function buttonOperator(operator) {
var input = document.getElementById("input");
var calc = document.getElementById("calculation");
// Make sure new number isn't empty and fits into the calculation
if (input.innerHTML != "") {
// Bunch of code
}
else {
// This line removes two characters instead of one
calc.innerHTML = calc.innerHTML.substring(0, calc.innerText.length - 1);
operators.pop();
switch (operator) {
case "÷":
calc.innerHTML += "÷";
operators.push("÷");
break;
case "×":
calc.innerHTML += "×";
operators.push("×");
break;
case "−":
calc.innerHTML += "−";
operators.push("−");
break;
case "+":
calc.innerHTML += "+";
operators.push("+");
break;
}
}
input.innerHTML = "";
comma = false;
}
该函数的目的是删除段落末尾已经存在的运算符并用新的运算符替换它。但是以与我在删除函数中相同的方式删除最后一个字符会以某种方式删除两个字符。
如果我有:
98 +
例如,再次按下加号将留下以下内容:
98+
然后再次:
9+
等等
我真的不明白这怎么可能发生。如果有人可以向我解释以供将来参考,我将不胜感激。
解决方案
推荐阅读
- r - 使用两个列表中的公共信息创建矩阵
- python - 根据条件替换熊猫数据框列中的数据,如果条件不满足则跳过
- python-3.x - 如何在 google colab 中下载 .CSV 中列出的所有 URL 图片内容?
- quarkus - Quarkus 入门项目无法生成原生镜像
- python - 处理缺失值(条件插补) Pandas
- html - 如何使图片正常缩放?
- r - 使用向量的值作为 flexdashboards 的输入
- python - 正则表达式提取与给定模式中的位置匹配的子字符串
- javascript - 如何使用javascript读取目录中的最新文件?
- json - 如何使用 AngularJS 和 JsonResult ASP.NET MVC 使用 ng-repeat 列出值