JSFiddle - React, Tailwind, and code Playground

by David Thomas

HTML

<div>rawr
</div>

CSS

div{
    border: solid 4px;
}

JavaScript

var anim = (function() {
    var i = 0;
    var step = 10;
    var up = true;
    var timer = null;

    var next = function() {
        if (up) {
            i += step;
        }
        else {
            i -= step;
        }
        if (i < 0) {
            i = 0;
            up = true;
        }
        if (i > 255) {
            i = 255;
            up = false;
        }
        update(i);
    };

    var update = function(i) {
        $("div").css("border-color", 'rgb(' + i + ',' + i + ',' + 0 + ')');
    };

    var go = function() {
        next();
        timer = window.setTimeout(anim.go, 30);
    };

    var stop = function() {
        if (timer) {
            window.clearTimeout(timer);
            timer = null;
        }
    };

    var addClickHandler = function() {
        $("div").click(function() {
            console.log(timer);
            if (!timer){
                timer = window.setTimeout(anim.go, 30);
            }
            else {
                window.clearTimeout(timer);
                timer = false;
                update(0);
            }

        });
    };



    return {
        go: go,
        stop: stop,
        addClickHandler: addClickHandler
    };
}());

anim.addClickHandler();
anim.go();