function initSorter() { const listContainer = document.querySelector('.s-res-list'); const sortRadios = document.querySelectorAll('.sort-radio'); // wenn keine liste vorhanden, abbrechen if (!listContainer || sortRadios.length === 0) return; sortRadios.forEach(radio => { radio.addEventListener('change', function() { const cards = Array.from(listContainer.querySelectorAll('.s-res-item')); const sortValue = this.value; cards.sort((a, b) => { if (sortValue === 'likes') { const likesA = parseInt(a.getAttribute('data-likes') || '0', 10); const likesB = parseInt(b.getAttribute('data-likes') || '0', 10); return likesB - likesA; } else if (sortValue === 'alphabet') { // alphabetische sortierung const titleA = a.querySelector('.s-res-link').textContent.trim().toLowerCase(); const titleB = b.querySelector('.s-res-link').textContent.trim().toLowerCase(); return titleA.localeCompare(titleB); } else if (sortValue === 'newest' || sortValue === 'oldest') { // hoehere ID wird als neuer gesehen const urlA = a.querySelector('.s-res-link').getAttribute('href'); const urlB = b.querySelector('.s-res-link').getAttribute('href'); const idA = parseInt(urlA.match(/id=(\d+)/)[1], 10); const idB = parseInt(urlB.match(/id=(\d+)/)[1], 10); return sortValue === 'newest' ? idB - idA : idA - idB; } return 0; }); listContainer.innerHTML = ''; cards.forEach(card => listContainer.appendChild(card)); }); }); } // ist das DOM bereits vollständig aufgebaut? if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initSorter); } else { initSorter(); }