Animated Counter

HTML

<!DOCTYPE html>
<html lang=”en”>
<head>
    <meta charset=”UTF-8″>
    <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
    <link rel=”shortcut icon” type=”image/x-icon” href=”/favicon.ico”>
    <link rel=”stylesheet” href=”style.css”>
    <title>Animated Counter</title>
</head>
<body>
    <header>
        <div class=”container”>
            <h1>Animated Counter</h1>
        </div>
    </header>
    <section class=”counters”>
        <div class=”container”>
            <div>
                <i class=”fab fa-youtube fa-4x”></i>
                <div class=”counter” data-target=”60000″>0</div>
                <h3>Subscribers</h3>
            </div>
            <div>
                <i class=”fab fa-twitter fa-4x”></i>
                <div class=”counter” data-target=”15000″>0</div>
                <h3>Followers</h3>
            </div>
            <div>
                <i class=”fab fa-facebook fa-4x”></i>
                <div class=”counter” data-target=”9000″>0</div>
                <h3>Likes</h3>
            </div>
            <div>
                <i class=”fab fa-linkedin fa-4x”></i>
                <div class=”counter” data-target=”5000″>0</div>
                <h3>Connections</h3>
            </div>
        </div>
    </section>
    <script src=”script.js”></script>
</body>
</html>

JavaScript

const counters = document.querySelectorAll(‘.counter’);
const speed = 200;
counters.forEach(counter => {
    const updateCount = () => {
        const target = +counter.getAttribute(‘data-target’);
        const count = +counter.innerText;
        const inc = target / speed;
        if(count < target) {
            counter.innerText = Math.ceil(count + inc);
            setTimeout(updateCount, 519);
        } else {
            count.innerText = target;
        }
    }
    updateCount();
})