javascript - 为什么我的 java 脚本计算器不工作
问题描述
我想制作一个计算器,显示在计算之前点击的数字。此版本尚未完成,但显示数字的代码已完成,但未按预期工作。
function getHistory() {
return document.querySelector(".history-value").innerText;
}
function printHistory(num) {
document.querySelector(".history-value").innerText = num;
}
function getOutput() {
document.getElementById("output-value").innertxt;
}
function printOutput(num) {
document.getElementById("output-value").innerText = num;
}
let getOperator = document.getElementsByClassName("operator");
for (var i = 0; i < getOperator.length; i++) {
getOperator[i].addEventListener("click", function() {
//uncompleted code
})
}
let getNumber = document.getElementsByClassName("number");
for (var i = 0; i < getNumber.length; i++) {
getNumber[i].addEventListener("click", function() {
let output = getOutput();
if (output != NaN) {
output = output + this.id
printOutput(output)
}
})
}
<div class="container">
<div class="calculator">
<div class="result">
<div class="history">
<p class="history-value"></p>
</div>
<div class="output">
<p id="output-value"></p>
</div>
</div>
<div class="keyboard">
<button class="operator" id="clear">C</button>
<button class="operator" id="backspace">CE</button>
<button class="operator" id="%">%</button>
<button class="operator" id="/">÷</button>
<button class="number" id="7">7</button>
<button class="number" id="8">8</button>
<button class="number" id="9">9</button>
<button class="operator" id="*">×</button>
<button class="number" id="4">4</button>
<button class="number" id="5">5</button>
<button class="number" id="6">6</button>
<button class="operator" id="-">-</button>
<button class="number" id="1">1</button>
<button class="number" id="2">2</button>
<button class="number" id="3">3</button>
<button class="operator" id="+">+</button>
<button class="empty" id="empty"></button>
<button class="number" id="0">0</button>
<button class="empty" id="empty"></button>
<button class="operator" id="=">=</button>
</div>
</div>
</div>
它必须在输出中显示我按下的所有数字,但它显示未定义加上最后按下的数字
解决方案
罪魁祸首在此功能中:
function getOutput(){
document.getElementById("output-value").innertxt;
}
这里有两个问题:
1-注意错字:是innerText
,不是innertxt
!2-这个函数没有返回值是innerText,事实上它没有返回任何调用它的代码,因此是“未定义”。
此外,要显示所有按下的数字,您可以使用 将数字附加到字符串output
中+=
,如下所示:
if (output!=NaN) {
output+=this.id
printOutput(output)
}
(也向操作员的处理程序添加类似的东西onclick
)。
<body>
<div class="container">
<div class="calculator">
<div class="result">
<div class="history">
<p class="history-value"></p>
</div>
<div class="output">
<p id="output-value"></p>
</div>
</div>
<div class="keyboard">
<button class="operator" id="clear">C</button>
<button class="operator" id="backspace">CE</button>
<button class="operator" id="%">%</button>
<button class="operator" id="/">÷</button>
<button class="number" id="7">7</button>
<button class="number" id="8">8</button>
<button class="number" id="9">9</button>
<button class="operator" id="*">×</button>
<button class="number" id="4">4</button>
<button class="number" id="5">5</button>
<button class="number" id="6">6</button>
<button class="operator" id="-">-</button>
<button class="number" id="1">1</button>
<button class="number" id="2">2</button>
<button class="number" id="3">3</button>
<button class="operator" id="+">+</button>
<button class="empty" id="empty"></button>
<button class="number" id="0">0</button>
<button class="empty" id="empty"></button>
<button class="operator" id="=">=</button>
</div>
</div>
</div>
<script>
function getHistory(){
return document.querySelector(".history-value").innerText;
}
function printHistory(num){
document.querySelector(".history-value").innerText=num;
}
function getOutput(){
return document.getElementById("output-value").innerText;
}
function printOutput(num){
document.getElementById("output-value").innerText=num;
}
let getOperator= document.getElementsByClassName("operator");
for (var i = 0; i < getOperator.length; i++) {
getOperator[i].addEventListener("click",function(){
//uncompleted code
})
}
let getNumber= document.getElementsByClassName("number");
for (var i = 0; i < getNumber.length; i++) {
getNumber[i].addEventListener("click",function(){
let output=getOutput();
if (output!=NaN) {
output+=this.id
printOutput(output)
}
})
}
</script>
</body>
</html>
推荐阅读
- python - 将字典映射到基于数据框的关键字匹配
- javascript - Sequelize 多对多查询模型
- three.js - THREE.js EdgesGeometry 的合并几何
- java - 在执行请求时在 Gatling 中遇到 doWhile 问题
- c# - 从 ContextMenu 编辑器模式 Unity 执行撤消和销毁子对象
- html - 在多列 html 表中显示数组
- intellij-idea - 如何让 IntelliJ 在文件中的查找始终以“在项目中”模式打开?
- vue.js - [Vue][SSR] 抑制水合不匹配警告
- r - x 轴不是从 R 中的 y=0 线开始
- scikit-learn - Kernal PCA 和 LLE 的结果对于为运行提供的不同 CPU 内核数量是不同的