所以我最近做了一个JavaScript计算器,除了我开始添加指数时,它运行得很好。
以下是包含我的计算器的摘要,您可以自己尝试尝试5 ^ 5 + 5 ^ 5之类的值,等于6250,但我的计算器说3135。
var isReset = 1;
function num(number){
if(isReset == 1){document.getElementById("display").innerHTML = number.toString();isReset=0;}
else{
document.getElementById("display").innerHTML = document.getElementById("display").innerHTML + number.toString();}
}
function calculate(){
document.getElementById("display").innerHTML = eval(document.getElementById("display").innerHTML.replace("^", "**").replace("x", "*").replace("÷", "/").replace("√", "Math.sqrt"));
isReset=1;
}
#container{
position:absolute;
left:40%;
border:1px grey solid;
top:40px;
}
<div id="container">
<div id="display">0</div>
<button onclick="num(1)">1</button>
<button onclick="num(2)">2</button>
<button onclick="num(3)">3</button>
<button onclick="document.getElementById('display').innerHTML = '0';isReset=1;">C</button>
<br>
<button onclick="num(4)">4</button>
<button onclick="num(5)">5</button>
<button onclick="num(6)">6</button>
<button onclick="num('÷')">÷</button>
<br>
<button onclick="num(7)">7</button>
<button onclick="num(8)">8</button
><button onclick="num(9)">9</button>
<button onclick="num('x')">x</button>
<br><button onclick="num('+')">+</button>
<button onclick="num(0)">0</button>
<button onclick="num('.')">.</button>
<button onclick="num('-')">-</button>
<br>
<button onclick="calculate()">=</button>
<button onclick="num('^')">^</button>
<button onclick="num('√(')">√</button>
<button onclick="num('(')">(</button>
<br><button onclick="num(')')">)</button>
<button onclick="if(document.getElementById('display').innerHTML.length !== 1){document.getElementById('display').innerHTML = document.getElementById('display').innerHTML.substring(0, document.getElementById('display').innerHTML.length - 1);}else{document.getElementById('display').innerHTML = '0';isReset=1;}">Del</button>
</div>
这好像是在做5 ^ 5 + 5 + 5,我不知道为什么。
谁能告诉我为什么会发生这种情况以及我可以采取什么措施来解决?
在JavaScript中replace
,当与字符串模式一起使用时,仅替换该模式的第一个实例。是的,这确实令人困惑。
console.log('bbbb'.replace('b', 'a'));
您必须使用带有该g
标志的正则表达式来替换所有这些字符–然后您必须考虑哪些字符在正则表达式中具有特殊含义。
.replace(/\^/g, '**')
String.prototype.replace
正则表达式的一种替代方法是先拆分然后合并:
.split('^').join('**') // equivalent to .replaceAll('^', '**')
// if replaceAll existed
没有这个,您就会得到(5**5 + 5) XOR 5
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句