Good day!
This is my version of Javascript Calculator: https://codepen.io/faber_g/pen/YzLpVWX
const calc = document.querySelector('.button-conteiner');
const regEx = /^(([1-9]\d*)|0)(.\d*[1-9])?$/;
calc.addEventListener('click', function(event) {
if(!event.target.classList.contains('calc-btn')) return;
let value = event.target.innerText;
if (value === 'x') {
value = '*'
};
switch(value) {
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (output.innerText === '') {
display.innerText = value;
output.innerText += value;
break;
}
else if (output.innerText === '0'){
display.innerText = value;
output.innerText = value;
break;
}
else if (display.innerText === '+' || display.innerText === '*'|| display.innerText === '/' || display.innerText === '-') {
display.innerText = value;
output.innerText += value;
break;
}
else {
display.innerText += value;
output.innerText += value;
break;
}
case 'AC':
output.innerText = '';
display.innerText = '0';
break;
case '=':
display.innerText = eval(output.innerText);
output.innerText = output.innerText + '=' + eval(output.innerText);
break;
case '.':
if (output.innerText === '' || output.innerText === '0.') {
display.innerText = '0.';
output.innerText = '0.';
break;
}
if (display.innerText.indexOf('.') !== -1) {
false
break;
}
else {
display.innerText += '.';
output.innerText += '.';
break;
}
case '0':
if (display.innerText === '0' && output.innerText === '') {
output.innerText = '';
}
else if (output.innerText.search(/^[0]/) !== -1) {
false
break;
}
else {
display.innerText += value;
output.innerText += value;
break;
}
case '+':
case '-':
case '*':
case '/':
if (output.innerText.search(/=/) !== -1) {
output.innerText = display.innerText + value;
display.innerText = value;
break;
}
else if (output.innerText.search(/^[+-/*]/) !== -1 && output.innerText.length === 1) {
output.innerText = value;
display.innerText = value;
break;
}
else if (output.innerText.search(/[+-/*]$/) !== -1 && value === '-') {
output.innerText += value;
display.innerText = value;
break;
}
else if (output.innerText.search(/[+-/*]$/) !== -1) {
output.innerText = output.innerText.substring(0, output.innerText.length - 1) + value;
display.innerText = display.innerText.replace(/[+-/*]$/, value);
break;
}
default:
output.innerText += value;
display.innerText = value;
}
});
I can not understand why it can’t pass test #9, #12, #13 and #14. When I make calculations by myself, answer is same like in the test, but when run it througth test, it is failed.
Please give me some hint where I missed problem.
You can run test by opening codepen and in the left corner you will see three green lines, it is drop down box is a test run.
Thank you!