MediaWiki:Gadget-main-trivia-box.js: Difference between revisions
m TadeLn moved page MediaWiki:Gadgets-main-trivia-box.js to MediaWiki:Gadget-main-trivia-box.js without leaving a redirect: Misspelled title |
No edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
console. | /* Finds elements by a selector and executes a function for each element */ | ||
function findAndExecute(selector, callback) { | |||
const elements = document.querySelectorAll(selector); | |||
elements.forEach((element) => { | |||
try { | |||
callback(element); | |||
} catch (e) { | |||
console.error(`Error while initializing "${selector}"`, e); | |||
} | |||
}); | |||
} | |||
/* Template:TriviaBox */ | |||
findAndExecute(".rgwiki-main-trivia-box", (div) => { | |||
function roll() { | |||
div.querySelectorAll("li.rgwiki-main-trivia-active").forEach(x => { x.classList.remove("rgwiki-main-trivia-active"); x.classList.add("rgwiki-main-trivia-previously-active"); }); | |||
const elements = div.querySelectorAll("li:not(.rgwiki-main-trivia-previously-active"); | |||
if (elements.length !== 0) { | |||
const rand = Math.floor(Math.random() * elements.length); | |||
elements[rand].classList.add("rgwiki-main-trivia-active"); | |||
} | |||
div.querySelectorAll("li.rgwiki-main-trivia-previously-active").forEach(x => { x.classList.remove("rgwiki-main-trivia-previously-active"); }); | |||
} | |||
const buttons = div.querySelector(".rgwiki-main-trivia-buttons"); | |||
const a = buttons.querySelector(".rgwiki-main-trivia-reroll"); | |||
a.addEventListener("click", roll); | |||
roll(); | |||
}); |