Calculator

My first calculator on JavaScript :-)

by ddrraaggaa

HTML

<input type="text" id="result" readonly>
<div id="table">
    <div class="row">
        <div class="cell">
            <input type="button" value="1" />
        </div>
        <div class="cell">
            <input type="button" value="2" />
        </div>
        <div class="cell">
            <input type="button" value="3" />
        </div>
        <div class="cell">
            <input type="button" value="+" />
        </div>
    </div>
    <div class="row">
        <div class="cell">
            <input type="button" value="4" />
        </div>
        <div class="cell">
            <input type="button" value="5" />
        </div>
        <div class="cell">
            <input type="button" value="6" />
        </div>
        <div class="cell">
            <input type="button" value="-" />
        </div>
    </div>
    <div class="row">
        <div class="cell">
            <input type="button" value="7" />
        </div>
        <div class="cell">
            <input type="button" value="8" />
        </div>
        <div class="cell">
            <input type="button" value="9" />
        </div>
        <div class="cell">
            <input type="button" value="*" />
        </div>
    </div>
    <div class="row">
        <div class="cell">
            <input type="button" value="C" />
        </div>
        <div class="cell">
            <input type="button" value="0" />
        </div>
        <div class="cell">
            <input type="button" value="=" />
        </div>
        <div class="cell">
            <input type="button" value="/" />
        </div>
    </div>
</div>

CSS

#table {
    display: table;
}
#result {
    width: 130px;
}
.row {
    display: table-row;
}
.cell {
    display: table-cell;
}
.cell input {
    width: 30px;
    height: 30px;
    margin: 5px 5px 0 0;
}

JavaScript

var result = document.getElementById('result');
var table = document.getElementById('table');
var buttons = table.getElementsByTagName('input');
var operands = ['+', '-', '*', '/'];

for (var index = 0, length = buttons.length; index < length; index++) {
    buttons[index].addEventListener('click', onButtonClick, false);
};

// проверяем событие на символ и возвращаем true/false
function isOperand(arr,item) {
    var result = false;
    
    for (var index = 0, length = arr.length; index < length; index++) {
        if (arr[index] == item) {
            return true;
            break;
        };
    };
    
    return result;
};

// вешаем событие на кнопки
function onButtonClick() {

    // проверяем на символ =
    if (this.value == '=') {

        if (isOperand(operands, result.value.substr(-1))) {
            alert('Неверный формат данных для вычисления');
            return;
        };

        // проверяем на пустое поле данных
        if (!result.value) return false;

        // вычисляем результат
        if (eval(result.value) !== 'Infinity') {
            result.value = eval(result.value);
        } else {
            alert('Делить на ноль нехорошо. Ай-я-яй!');
            result.value = '';
        };

        return;
    };

    // кнопка очищения поля ввода
    if (this.value == 'C') {
        result.value = '';
        return;
    };

    // проверка на пустое поле и нажатии символа
    if (isOperand(operands, this.value) && !result.value) return false;

    // проверяем на двойной симпол и заменяем на новый
    if (isOperand(operands, this.value) && isOperand(operands, result.value.substr(-1))) {
        result.value = result.value.substr(0, result.value.length - 1) + this.value;
        return;
    };

    // если все хорошо, то добавляем символ
    result.value += this.value;
};