内容
我正在尝试构建一个Javascript计算器,但它不起作用,因为eval()不能与我使用的方式一起工作。在我的控制台中,它为我提供了输入字段的单个值。以下是我正在使用的代码。
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<input type="text" name="" disabled="true" id="inputField">
<button id="btn5" value="5">5</button>
<button id="btn2" value="2">2</button>
<button id="operator" value="+">+</button>
<button id="eval">=</button>
</body>
<script type="text/javascript">
var btn5 = document.getElementById('btn5');
var btn2 = document.getElementById('btn2');
var inpField = document.getElementById('inputField');
var operator = document.getElementById('operator');
var eval = document.getElementById('eval');
btn5.addEventListener('click', btn5Function);
btn2.addEventListener('click', btn2Function);
operator.addEventListener('click', operatorFunction);
eval.addEventListener('click', evalFunction)
//inpField.value = "";
function btn5Function() {
inpField.value += btn5.value;
}
function btn2Function() {
inpField.value += btn2.value;
}
function operatorFunction() {
inpField.value += operator.value;
}
function evalFunction() {
var storeVal = parseInt(inpField.value);
console.log(storeVal);
var cal = eval(storeVal);
inpField.value = cal;
}
</script>
</html>
在 JavaScript 中,在严格模式的范围之外,你可以覆盖 JavaScript 函数和关键字。在本例中,您将覆盖 eval
函数:
var eval = document.getElementById('eval');
重命名该变量应该会导致您的问题消失。
我还注意到您对使用parseInt
功能没有100%的信心,您可以在此处阅读更多
我认为问题是您正在尝试在由运算符组成的字符串上解析Int,因此问题:
var storeVal = parseInt(inpField.value); <-- this will not work.