? A-Z Slot Game Comparisons
Browse our complete library of slot game comparison pages. Find detailed comparisons of features, RTP, volatility, and bonus rounds across thousands of popular online slots.
? Total Comparisons: 0 | Showing: 0
';
document.getElementById('viewingCount').textContent = '0';
document.getElementById('paginationTop').innerHTML = '';
document.getElementById('paginationBottom').innerHTML = '';
return;
}
// Group current page by letter
const pageGrouped = {};
pageGames.forEach(game => {
const firstChar = game.game1.charAt(0).toUpperCase();
const letter = /[A-Z]/.test(firstChar) ? firstChar : '#';
if (!pageGrouped[letter]) pageGrouped[letter] = [];
pageGrouped[letter].push(game);
});
container.innerHTML = '';
Object.keys(pageGrouped).sort().forEach(letter => {
const section = document.createElement('div');
section.className = 'letter-section';
section.id = `section-${letter}`;
const header = document.createElement('div');
header.className = 'letter-header';
header.innerHTML = `${letter}
${pageGrouped[letter].length} comparisons`;
const list = document.createElement('div');
list.className = 'games-list';
pageGrouped[letter].forEach(game => {
const link = document.createElement('a');
link.href = game.url;
link.className = 'game-link';
link.innerHTML = `${game.game1}
vs ${game.game2}`;
list.appendChild(link);
});
section.appendChild(header);
section.appendChild(list);
container.appendChild(section);
});
document.getElementById('viewingCount').textContent = `${start + 1}-${end} of ${games.length.toLocaleString()}`;
createPagination(games.length);
}
function createPagination(total) {
const totalPages = Math.ceil(total / gamesPerPage);
if (totalPages <= 1) {
document.getElementById('paginationTop').innerHTML = '';
document.getElementById('paginationBottom').innerHTML = '';
return;
}
['paginationTop', 'paginationBottom'].forEach(id => {
const container = document.getElementById(id);
container.innerHTML = '';
const prevBtn = document.createElement('button');
prevBtn.textContent = '? Prev';
prevBtn.disabled = currentPage === 1;
prevBtn.onclick = () => { renderPage(currentPage - 1); window.scrollTo({top: 0, behavior: 'smooth'}); };
container.appendChild(prevBtn);
// Page numbers
let startPage = Math.max(1, currentPage - 2);
let endPage = Math.min(totalPages, currentPage + 2);
if (startPage > 1) {
const first = document.createElement('button');
first.textContent = '1';
first.onclick = () => { renderPage(1); window.scrollTo({top: 0, behavior: 'smooth'}); };
container.appendChild(first);
if (startPage > 2) {
const dots = document.createElement('span');
dots.textContent = '...';
dots.style.padding = '0 10px';
dots.style.color = '#888';
container.appendChild(dots);
}
}
for (let i = startPage; i <= endPage; i++) {
const btn = document.createElement('button');
btn.textContent = i;
if (i === currentPage) btn.style.background = '#e74c3c';
if (i === currentPage) btn.style.color = '#fff';
btn.onclick = () => { renderPage(i); window.scrollTo({top: 0, behavior: 'smooth'}); };
container.appendChild(btn);
}
if (endPage < totalPages) {
if (endPage < totalPages - 1) {
const dots = document.createElement('span');
dots.textContent = '...';
dots.style.padding = '0 10px';
dots.style.color = '#888';
container.appendChild(dots);
}
const last = document.createElement('button');
last.textContent = totalPages;
last.onclick = () => { renderPage(totalPages); window.scrollTo({top: 0, behavior: 'smooth'}); };
container.appendChild(last);
}
const nextBtn = document.createElement('button');
nextBtn.textContent = 'Next ?';
nextBtn.disabled = currentPage === totalPages;
nextBtn.onclick = () => { renderPage(currentPage + 1); window.scrollTo({top: 0, behavior: 'smooth'}); };
container.appendChild(nextBtn);
});
}
function handleSearch(e) {
const query = e.target.value.toLowerCase().trim();
activeFilter = null;
document.querySelectorAll('.alphabet-nav button').forEach(b => b.classList.remove('active'));
if (!query) {
filteredGames = null;
renderPage(1);
return;
}
filteredGames = allGames.filter(game =>
game.name.toLowerCase().includes(query) ||
game.game1.toLowerCase().includes(query) ||
game.game2.toLowerCase().includes(query)
);
renderPage(1);
}
// Initialize
processUrls();