私はJavascript電卓を構築しようとしていますが、eval()が使用している方法で動作しないため動作しません。私のコンソールでは、それは私に入力フィールドの単一の値を与えています。以下は私が使用しているコードです。 JavaScriptで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>
が機能しません。それは私に最初に押された数字を与えています。たとえば、「5」を押してから「+」を押すと「2」を押すと、「5」だけが表示されます。 –
あなたは 'parseInt'を使っているからです。 'parseInt'は左から右の数字を探し、それが数字でない文字を満たすときに止まります。だから、 '2 + 3'の場合、関数は最初の文字' 2'を読みます。それはOKです。数字以外の文字 '+'を満たし、ここで停止して2を返します。 値は整数に変換されます。なぜなら 'eval'は文字列を期待しているからです。 –
@CristianTraìnaうん、うまくいきました。 Thnx –