JSFiddle - React, Tailwind, and code Playground

HTML

<div class="number" data-max="300">0</div>

CSS

body {
    height: 2000px;
}

.number {
    margin-top: 1000px;
}

JavaScript

var number = document.querySelector('.number'),
		numberTop = number.getBoundingClientRect().top,
    start = +number.innerHTML, end = +number.dataset.max;

window.addEventListener('scroll', function onScroll() {
		if(window.pageYOffset > numberTop - window.innerHeight / 2) {
    		this.removeEventListener('scroll', onScroll);
        var interval = setInterval(function() {
        		number.innerHTML = ++start;
            if(start == end) {
            		clearInterval(interval);
            }
        }, 5);
    }
});