【发布时间】:2021-03-22 12:11:25
【问题描述】:
我用纯 JavaScript 做了一个简单的计算器。
function display(val) {
document.getElementById("result").value += val;
}
function solve() {
let x = document.getElementById("result").value
let y = eval(x)
document.getElementById("result").value = y
}
function clr() {
document.getElementById("result").value = ""
}
<div class="app-wrapper">
<div class="calc-wrapper">
<div class="calc-display">
<input type="text" id="result">
</div>
<div class="button-cont">
<div class="row row-1">
<div class="button ac" onclick="clr()">AC</div>
<div onclick="display('/')" class="button operator">/</div>
</div>
<div class="row row-2">
<div onclick="display('7')" class="button digit">7</div>
<div onclick="display('8')" class="button digit">8</div>
<div onclick="display('9')" class="button digit">9</div>
<div onclick="display('*')" class="button operator">*</div>
</div>
<div class="row row-3">
<div onclick="display('4')" class="button digit">4</div>
<div onclick="display('5')" class="button digit">5</div>
<div onclick="display('6')" class="button digit">6</div>
<div onclick="display('-')" class="button operator">-</div>
</div>
<div class="row row-4">
<div onclick="display('1')" class="button digit">1</div>
<div onclick="display('2')" class="button digit">2</div>
<div onclick="display('3')" class="button digit">3</div>
<div onclick="display('+')" class="button operator">+</div>
</div>
<div class="row row-5">
<div onclick="display('0')" class="button digit zero">0</div>
<div onclick="display('.')" class="button digit">.</div>
<div onclick="solve()" class="button operator">=</div>
</div>
</div>
</div>
</div>
现在我有一些关于运营商的问题。当我输入 plus 不止一次时,我不希望它显示不止一次。与/、*、-、+ 和 . 相同。
【问题讨论】:
-
你做了什么来尝试解决这个问题?
-
你不应该使用eval()。它存在性能和安全问题。
-
好吧,使用逻辑。当您输入内容时,您正在调用
display。在该函数中,您可以查看input中已有的内容。所以检查最后一个字符;如果是同一个运算符,则不要将运算符添加到input。 -
@Sebastian Simon:打开 devtool 控制台也可以做任何事情。如果人们知道在该输入字段中写什么来乱七八糟,他们就知道如何打开控制台。
标签: javascript html calculator