MediaWiki:Common.js
Appearance
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */ #Filterable tables document.addEventListener("DOMContentLoaded", function () { function createFilterInputs(table) { let thead = table.querySelector("thead"); if (!thead) return; let headerRow = thead.rows[0]; let filterRow = document.createElement("tr"); for (let i = 0; i < headerRow.cells.length; i++) { let th = document.createElement("th"); let input = document.createElement("input"); input.setAttribute("type", "text"); input.setAttribute("placeholder", "Filter..."); input.style.width = "90%"; input.dataset.column = i; input.addEventListener("keyup", function () { let col = this.dataset.column; let filter = this.value.toLowerCase(); let tbody = table.querySelector("tbody"); let rows = tbody.getElementsByTagName("tr"); for (let row of rows) { let cell = row.getElementsByTagName("td")[col]; if (cell) { let text = cell.textContent || cell.innerText; row.style.display = text.toLowerCase().includes(filter) ? "" : "none"; } } }); th.appendChild(input); filterRow.appendChild(th); } thead.appendChild(filterRow); } function makeTablesFilterable() { document.querySelectorAll(".filterable-table").forEach(table => { createFilterInputs(table); }); } makeTablesFilterable(); });