let listFetched = false; let list = []; let position = 1; window.onload = function () { getName(position++); addEvent( document.getElementById('generate'), 'click', function () { getName(1 + position++); } ); }; function addEvent(element, evnt, funct){ if (element.attachEvent) return element.attachEvent('on'+evnt, funct); else return element.addEventListener(evnt, funct, false); } function generate() { if (!listFetched) { fetch("https://swordname.turtlebard.com/") .then(function (response) { return response.json(); }) .then(function (data) { let nameData = data; list = nameData; listFetched = true; position = 1; getName(1); }) .catch(function (err) { console.warn("Something went wrong.", err); }); } else { getName(position); } } function getName(position) { if (position list.length || position == 0) { position++; listFetched = false; generate(); } else { document.getElementById("sword").innerHTML = '' + list[position-1] + " "; } } Generate