makeCounter Object

clogure, object

by Denni Adam

HTML

<div id='wrapper'></div>

CSS

.even, .odd {
    min-height: 20px;
    padding: 5px;
    margin: 5px 0;
}
.even {
    color: blue;
    border: 1px dashed blue;
    background-color: #eef;
}
.odd {
    color: red;
    border: 1px dashed red;
    background-color: #fee;
}

JavaScript

function cLog() {
    var divNum = 0;
    return function (msg) {
        divNum++;
        var divId = 'd' + divNum;
        var divClass = (divNum % 2 == 0) ? 'even' : 'odd';
        var e = document.createElement('div');
        e.setAttribute('class', divClass);
        e.setAttribute('id', divId);
        document.getElementById('wrapper').appendChild(e);
        document.getElementById(divId).textContent = msg;
        return divNum;
    }
}

function makeCounter() {
    var currentCount = 0;

    return {
        getNext: function () {
            return ++currentCount;
        },
        set: function (value) {
            currentCount = +value;
            return currentCount;
        },
        reset: function () {
            currentCount = 0;
            return currentCount;
        }
    };
}

var counter = makeCounter();
var _print = cLog();
_print(counter.getNext());
_print(counter.getNext());
_print(counter.getNext());
_print(counter.getNext());
_print(counter.set(15));
_print(counter.getNext());
_print(counter.reset());
_print(counter.getNext());