I'm beginner in coding, still in learning process, and I stuck on some problem creating a simple Calculator app as part of my practice in JS. I have problem that when I make some prompt in the calculator screen as 3+3, than when I press equal I get the result 3+3undefined.
First I checked if I selected the variables correctly, then if I assigned add Listener correctly, then I tried to use math expression evaluation, but all without success. Everything I've tried always either throws Error or undefined.
(function() {
let screen = document.querySelector('#display');
let buttons = document.querySelectorAll('.btn');
let clear = document.querySelector('#clear');
let equal = document.querySelector('#equals');
buttons.forEach(function(button) {
button.addEventListener('click', function(e) {
let value = e.target.dataset.num;
screen.value += value;
});
});
equal.addEventListener('click', function(e) {
if (screen.value === '') {
screen.value = "";
} else {
let answer = eval(screen.value); /* every check says that there is a code error in this line.*/
screen.value = answer;
}
});
clear.addEventListener('click', function(e) {
screen.value = "";
});
})();
<div class="calculator">
<form>
<input type="text" class="screen" id="display">
</form>
<div class="buttons">
<button type="button" class="btn btn-yellow" id="multiply" data-num="*">*</button>
<button type="button" class="btn btn-yellow" id="divide" data-num="/">/</button>
<button type="button" class="btn btn-yellow" id="subtract" data-num="-">-</button>
<button type="button" class="btn btn-yellow" id="add" data-num="+">+</button>
<button type="button" class="btn" id="nine" data-num="9">9</button>
<button type="button" class="btn" id="eight" data-num="8">8</button>
<button type="button" class="btn" id="seven" data-num="7">7</button>
<button type="button" class="btn" id="decimal" data-num=".">.</button>
<button type="button" class="btn" id="six" data-num="6">6</button>
<button type="button" class="btn" id="five" data-num="5">5</button>
<button type="button" class="btn" id="four" data-num="4">4</button>
<button type="button" class="btn btn-red" id="clear">C</button>
<button type="button" class="btn" id="three" data-num="3">3</button>
<button type="button" class="btn" id="two" data-num="2">2</button>
<button type="button" class="btn" id="one" data-num="1">1</button>
<button type="button" class="btn btn-green" id="equals">=</button>
<button type="button" class="btn" id="zero" data-num="0">0</button>
</div>
</div>
<script src="./script.js"></script>