JSFiddle - React, Tailwind, and code Playground

by Nenad Novakovic

HTML

<div id="da-count">We have <span id="da-remain">560</span> keys left in stock.</div>

CSS

#da-count {
    font-family: 'Helvetica', sans-serif;
    font-weight: 300;
    color: #222;
    margin: 12px 0;
}
#da-remain {
    font-weight: 400;
    color: #c99;
}

JavaScript

function daCounter (sum) {
    var daRemain = $("#da-remain");
        daCurrent = parseInt(daRemain.text()),
        daLeft = parseInt(sum),
        daSplit = daCurrent - daLeft;

    var daCount = setInterval(function () {
        daRemain.html(daCurrent - 1);

        daCurrent -= 1;
        
        if (daCurrent == 320) {
            clearInterval(daCount);
            daCount_two();
        }
    }, 50);
    
    function daCount_two () {
        var daCount_two = setInterval(function () {
            daRemain.html(daCurrent - 1);
    
            daCurrent -= 1;
    
            if (daCurrent == 215) {
                clearInterval(daCount_two);
                daCount_three();
            }
        }, 120);
    }
    
    function daCount_three () {
        var daCount_three = setInterval(function () {
            daRemain.html(daCurrent - 1);
    
            daCurrent -= 1;
            if (daCurrent == daSplit) clearInterval(daCount_three);
        }, 700);
    }
}

// Trigger function after 50 milliseconds
setTimeout(function () {
    daCounter(420);
}, 50);