Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sprawdzić jaki kolor wypełnienia ma wiersz tabeli
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kryspinus
Witam, mam taki problem, że w zależności od tego jaki kolor wypełnienia ma wiersz tabeli, muszę go zmienić na inny, mam taką funkcję, która nie działa:

Kod
function AktywDeaktyw(tabela)
     {
         var table = document.getElementById(tabela);
         var cells = table.getElementsByTagName("td");
        
         if(cells[i].style.background == '#CCCCCC')
             {
                 cells[i].style.background = '#FFFFCC';
             }
         else if(cells[i].style.background == '#FFFFCC')
             {
                 cells[i].style.background = '#CCCCCC';
             }
        
         return false;
     }
skowron-line
  1.  
  2. <script type="text/javascript">
  3.  
  4. function tblRows(){
  5.  
  6. var oTable = document.getElementById( 'oTable' );
  7.  
  8. for( var i=0; i< oTable.rows.length; i++)
  9. {
  10.  
  11. if( oTable.rows[ i ].style.backgroundColor == 'green')
  12. oTable.rows[ i ].style.backgroundColor = 'silver';
  13. else if( oTable.rows[ i ].style.backgroundColor == 'red' )
  14. oTable.rows[ i ].style.backgroundColor = 'blue';
  15.  
  16. }
  17.  
  18. }
  19.  
  20.  
  21. </head>
  22. <body onLoad="tblRows();">
  23.  
  24. <table id="oTable">
  25.  
  26. <tr style="background-color:green">
  27. <td>aaa</td>
  28. <td>aaa</td>
  29. <td>aaa</td>
  30. </tr>
  31. <tr style="background-color:red">
  32. <td>bbb</td>
  33. <td>bbb</td>
  34. <td>bbb</td>
  35. </tr>
  36.  
  37.  
  38. </body>
  39. </html>

jeżeli o to chodziło.
+
http://www.javascriptkit.com/domref/tableproperties.shtml

Edit::
Może dorzuce jeszcze jedno rozwiązanie żeby ludziska nie pisali ze jak jest
Kod
<tr bgcolor="yellow">

to nie działa
odpowiedzią jest pobranie atrybutu
Kod
oTable.rows[ i ].getAttribute( 'bgcolor' )
// zamiast
oTable.rows[ i ].style.backgroundColor


pzdr.
kryspinus
Witam, Dzięki wielkie za odpowiedź, dzisiaj sprawdziłem to rozwiązanie i jednak to
Kod
             oTable.rows[ i ].style.backgroundColor

działa zamiast
Kod
               oTable.rows[ i ].getAttribute( 'bgcolor' )


Do tego zmodyfikowałem trochę tą funkcję, to ją wkleję, może się komuś przyda

Kod
             function AktywDeaktyw()
                 {
                     var table = document.getElementById('id_tabeli');
                    
                     for(i=0; i< table.rows.length; i++)
                         {
                             if(table.rows[i].style.backgroundColor == 'rgb(255, 0, 0)') //Odpowiednik red
                                 {
                                     table.rows[i].style.backgroundColor = 'rgb(0, 255, 0)'; //Odpowiednik green
                                 }
                             else if(table.rows[i].style.backgroundColor == 'rgb(0, 255, 0)')
                                 {
                                     table.rows[i].style.backgroundColor = 'rgb(255, 0, 0)';
                                 }
                         }
                 }


Definicja wiersza tabeli wygląda tak:
  1. <tr style="background-color:#FF0000"> //red
  2. <tr style="background-color:#00FF00"> //green


Dodam jeszcze, że pod Internet Explorer ten kod nie działa. Żeby działał również pod IE, trzeba używać definicji słownych:

  1. <tr style="background-color:red">

Kod
table.rows[i].style.backgroundColor == 'red'
kamil4u
Nie patrzyłem na kod JS, ale brakuje ";" w CSS - więc może dlatego 'nie działa' smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.