我正在尝试构建一个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>
答案 0 :(得分:2)
在JavaScript中,超出严格模式的范围,您可以覆盖JavaScript 功能和关键字。在这种情况下,您将覆盖eval
函数:
var eval = document.getElementById('eval');
重命名该变量会导致问题消失。
我还注意到您对parseInt
功能的使用没有百分之百的信心,您可以阅读更多here
答案 1 :(得分:0)
我认为问题是你正在尝试对由运算符组成的字符串进行parseInt,因此问题是:
var storeVal = parseInt(inpField.value); <-- this will not work.