Mam tabelę, którą generuje kod PHP z danymi wyciąganymi z bazy MySQL.
Znalazłem gdzieś w internecie kod JavaScript, który podświetla wybranym wcześniej kolorem kliknięty wiersz tej tabeli. I to działa.
Ale potem zastosowałem dodatkowo inny kod, aby tabela miała pasek przewijania, nieruchome nagłówki kolumn i kolorowany co drugi wiersz. zadziałało tak jak chciałem, ale...
Niestety, podświetlanie klikniętego wiersza przestało działać.

poniżej wklejam kody

JavaScript dla podświetlania wiersza
[JAVASCRIPT] pobierz, plaintext
  1. var selectedClass='highlight';
  2. var selectedRow=null;
  3.  
  4. function selectRow(row){
  5. if( row.className.indexOf(selectedClass) != -1 )
  6. clearSelection( row );
  7. else{
  8. clearSelection( selectedRow);
  9.  
  10. row.className += " "+selectedClass;
  11. selectedRow=row;
  12. }
  13. }
  14. function clearSelection( row ){
  15. var reg = new RegExp('(\\s|^)'+selectedClass+'(\\s|$)');
  16. if(selectedRow!=null) row.className=row.className.replace(reg,' ');
  17. }
[JAVASCRIPT] pobierz, plaintext


CSS
  1. .highlight {
  2. background:#00FFFF;
  3. }

PHP
  1. echo '<tr onClick="selectRow(this)">
  2. <td>'.$wiersz['ID'].'</td>
  3. ...
  4. </tr>';


Natomiast kod JavaScript do przewijania tabeli itd jest nastepujący.

[JAVASCRIPT] pobierz, plaintext
  1. function removeClassName (elem, className) {
  2. elem.className = elem.className.replace(className, "").trim();
  3. }
  4.  
  5. function addCSSClass (elem, className) {
  6. removeClassName (elem, className);
  7. elem.className = (elem.className + " " + className).trim();
  8. }
  9.  
  10. String.prototype.trim = function() {
  11. return this.replace( /^\s+|\s+$/, "" );
  12. }
  13.  
  14. function stripedTable() {
  15. if (document.getElementById && document.getElementsByTagName) {
  16. var allTables = document.getElementsByTagName('table');
  17. if (!allTables) { return; }
  18.  
  19. for (var i = 0; i < allTables.length; i++) {
  20. if (allTables[i].className.match(/[\w\s ]*scrollTable[\w\s ]*/)) {
  21. var trs = allTables[i].getElementsByTagName("tr");
  22. for (var j = 0; j < trs.length; j++) {
  23. removeClassName(trs[j], 'alternateRow');
  24. addCSSClass(trs[j], 'normalRow');
  25. }
  26. for (var k = 0; k < trs.length; k += 2) {
  27. removeClassName(trs[k], 'normalRow');
  28. addCSSClass(trs[k], 'alternateRow');
  29. }
  30. }
  31. }
  32. }
  33. }
  34.  
  35. window.onload = function() { stripedTable(); }
[JAVASCRIPT] pobierz, plaintext


Kodu CSS nie umieszczam, bo post za długi się robi

Dodatkowo w kodzie HTML mam następujące linijki
  1. <thead class="fixedHeader">
  2. <tbody class="scrollContent">
  3. <tr class="alternateRow">


Finalnie obydwa te kody JavaScript umieściłem w jednym pliku, ale widocznie coś się kłóci, choć błędów nie widać.
Jeżeli zrobię odwołanie do tego pliku w kodzie dla "zwykłej" tabeli, to podświetlanie wiersza działa, tak samo działa dobrze z tym plikiem dla kodu z przewijaniem tabeli, tyle że nie działa podświetlanie wiersza.
Pomoże ktoś?

EDIT:

To chyba nie o JavaScript chodzi, a o ten kod, który przewija tabelę, czyli CSS raczej...

EDIT 2:
Teraz już wiem na pewno co jest powodem niedziałania. Namierzyłem fragment kodu CSS odpowiedzialny za kolorowanie co drugiego wiersza i to on przeszkadza.
Chciałbym jednak pozostawić to kolorowanie mieć dodatkowo podświetlanie klikniętego wiersza.
Mógłbym wkleić przykładowy kod HTML, JavaScript i CSS, ale post na forum nie przyjmie ze względu na rozmiar.
Gdzie mógłbym umieścić te pliki, aby chcący zająć się tym tematem mogli je pobrać?
PHP i baza nie są potrzebne.

EDIT 3:
Nie wiem, czy to będzie trzymać, ale może ktoś zdąży to sprawdzić.
https://jsbin.com/yepoqedugu/1/edit?html,css,js,output

Nie otwierać w wynalazkach Microsoftu!

EDIT 4:
Jeżeli ktoś kliknął na ten link i mu się otworzyło, to tam jest taki fragment kodu CSS.

  1. /* Ten fragment kodu CSS przeszkadza w podświetlaniu po kliknięciu, a odpowiada za kolorowanie co drugiego wiersza */
  2. /* make TD elements pretty. Provide alternating classes for striping the table */
  3. /* <a href="http://www.alistapart.com/articles/zebratables/" target="_blank">http://www.alistapart.com/articles/zebratables/</a> */
  4.  
  5. /*tbody.scrollContent td, tbody.scrollContent tr.normalRow td {
  6. background: #FFA;
  7. border-bottom: none;
  8. border-left: none;
  9. border-right: 1px solid #CCC;
  10. border-top: 1px solid #DDD;
  11. padding: 2px 3px 3px 4px
  12. }
  13.  
  14. tbody.scrollContent tr.alternateRow td {
  15. background: #EEE;
  16. border-bottom: none;
  17. border-left: none;
  18. border-right: 1px solid #CCC;
  19. border-top: 1px solid #DDD;
  20. padding: 2px 3px 3px 4px
  21. }
  22.  
  23. */

zmieniłem na następujący:
  1. tbody.scrollContent td, tbody.scrollContent tr.normalRow td, tbody.scrollContent tr.selectRow td {
  2. background: #FF58;
  3. border-bottom: none;
  4. border-left: none;
  5. border-right: 1px solid #CCC;
  6. border-top: 1px solid #DDD;
  7. padding: 2px 3px 3px 4px
  8. }
  9.  
  10. tbody.scrollContent tr.alternateRow td, tbody.scrollContent tr.selectRow td {
  11. background: #EEE8;
  12. border-bottom: none;
  13. border-left: none;
  14. border-right: 1px solid #CCC;
  15. border-top: 1px solid #DDD;
  16. padding: 2px 3px 3px 4px
  17. }

Oczywiście zlikwidowałem komentarze.
I wydaje się działać. Tylko że kolor podświetlenia jest zależny od koloru linii, na której się kliknie (na żółtym inny niż na szarym).

Może to się komuś przyda.