MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| Строка 339: | Строка 339: | ||
var tables = document.querySelectorAll('.wikitable:not(.no-highlight-table)'); | var tables = document.querySelectorAll('.wikitable:not(.no-highlight-table)'); | ||
tables. | for (var i = 0; i < tables.length; i++) { | ||
var table = tables[i]; | |||
var tbody = table.querySelector('tbody'); | var tbody = table.querySelector('tbody'); | ||
if (!tbody) | if (!tbody) continue; | ||
var rows = Array. | var rows = Array.prototype.slice.call(tbody.querySelectorAll('tr')).filter(function(row) { | ||
return !row.querySelector('table'); | |||
}); | |||
var rowspanCells = []; | var rowspanCells = []; | ||
rows. | for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) { | ||
var cells = Array. | var row = rows[rowIndex]; | ||
var cells = Array.prototype.slice.call(row.querySelectorAll('td, th')); | |||
cells. | for (var cellIndex = 0; cellIndex < cells.length; cellIndex++) { | ||
var cell = cells[cellIndex]; | |||
var rowspan = parseInt(cell.getAttribute('rowspan'), 10); | var rowspan = parseInt(cell.getAttribute('rowspan'), 10); | ||
| Строка 357: | Строка 363: | ||
// Подсветка для ячейки с rowspan | // Подсветка для ячейки с rowspan | ||
cell.addEventListener('mouseover', function() { | cell.addEventListener('mouseover', (function(cell, rowIndex, rowspan) { | ||
for (var i = 0; i < rowspan; i++) { | return function() { | ||
for (var i = 0; i < rowspan; i++) { | |||
if (rows[rowIndex + i]) { | |||
highlightRow(rows[rowIndex + i]); | |||
} | |||
} | } | ||
} | }; | ||
}); | })(cell, rowIndex, rowspan)); | ||
cell.addEventListener('mouseout', function() { | cell.addEventListener('mouseout', (function(cell, rowIndex, rowspan) { | ||
for (var i = 0; i < rowspan; i++) { | return function() { | ||
for (var i = 0; i < rowspan; i++) { | |||
if (rows[rowIndex + i]) { | |||
resetRow(rows[rowIndex + i]); | |||
} | |||
} | } | ||
} | }; | ||
}); | })(cell, rowIndex, rowspan)); | ||
} | } | ||
// Подсветка для строки | // Подсветка для строки | ||
row.addEventListener('mouseover', function() { | row.addEventListener('mouseover', (function(row) { | ||
highlightRow(row); | return function() { | ||
}); | highlightRow(row); | ||
}; | |||
})(row)); | |||
row.addEventListener('mouseout', function() { | row.addEventListener('mouseout', (function(row) { | ||
resetRow(row); | return function() { | ||
}); | resetRow(row); | ||
} | }; | ||
} | })(row)); | ||
} | |||
} | |||
function highlightRow(row) { | function highlightRow(row) { | ||
row.querySelectorAll('td, th'). | var rowCells = row.querySelectorAll('td, th'); | ||
for (var j = 0; j < rowCells.length; j++) { | |||
var cell = rowCells[j]; | |||
cell.style.backgroundColor = brightenColor(getComputedStyle(cell).backgroundColor); | cell.style.backgroundColor = brightenColor(getComputedStyle(cell).backgroundColor); | ||
cell.style.color = brightenColor(getComputedStyle(cell).color); | cell.style.color = brightenColor(getComputedStyle(cell).color); | ||
} | } | ||
} | } | ||
function resetRow(row) { | function resetRow(row) { | ||
row.querySelectorAll('td, th'). | var rowCells = row.querySelectorAll('td, th'); | ||
for (var j = 0; j < rowCells.length; j++) { | |||
var cell = rowCells[j]; | |||
cell.style.backgroundColor = ''; // сбросить на стандартный фон | cell.style.backgroundColor = ''; // сбросить на стандартный фон | ||
cell.style.color = ''; // сбросить цвет текста | cell.style.color = ''; // сбросить цвет текста | ||
} | } | ||
} | } | ||
} | } | ||
} | } | ||