Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    onmouseover con ritorno a colori alternati

    ciao
    Ho una tabella con 10 righe...
    le righe sono colorate dinamicamente in questo modo
    Codice PHP:

    var sfondo="";
                    
    for(
    k=0;k<10;k++){
    if(
    k%2){
    sfondo "#DDDDEE";
    }else
      
    sfondo "#CDCDF7";
    document.write('<tr onMouseover="highlightie5(this)" onMouseout="lowlightie5(this);" style="background:'+sfondo+'"><td>yyy</td></tr>');


    le righe vengono colorate alternate , 1 con #DDDDEE e 1 con #CDCDF7


    A questo punto con il metodo highlightie5() vado a cambiare lo sfondo della riga...

    Codice PHP:

    function highlightie5(tr){
        
    tr.style.backgroundColor="#AAAAEE";

    e quello che vorrei e' che all'onmouseout mi tornasse al colore di sfondo che aveva prima
    Codice PHP:

    function lowlightie5(tr){
       ??????
       

    non riesco ad ottenere il colore di fondo che hanno prima di passarci sopra.

    come posso fare?

  2. #2
    Puoi salvarti per ogni tr il colore base ed usarlo nella onmouseover, così:
    codice:
    var sfondo="";
                    
    for(k=0;k<10;k++){
    if(k%2){
    sfondo = "#DDDDEE";
    }else
      sfondo = "#CDCDF7";
    document.write('<tr rel="' + sfondo + '" onMouseover="highlightie5(this)" onMouseout="lowlightie5(this);" style="background:'+sfondo+'"><td>yyy</td></tr>');
    }
    quindi la funzione lowlightie5 sarà:
    codice:
    function lowlightie5(tr){ 
    	tr.style.backgroundColor=tr.getAttribute("rel");
    }
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    che dire....miticissimo.
    grazie, funziona perfettamente

  4. #4
    Bene, mi fa piacere
    Tao!
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  5. #5
    Non capisco perchè vi ostinate a usare javascript in questo modo e a trattare il markup con così poco rispetto. Mi spiego.

    Innanzitutto, una soluzione come quella presentata a inizio discussione presenta un grave errore concettuale: in caso di javascript disattivato, infatti, la tabella non viene visualizzata. E' una perdita di informazione inammissibile.

    Secondo, per gestire la grafica di un documento web hanno inventato i CSS: perchè non sfruttarli? Sono lì apposta.

    In ultimo, homezappa propone di usare l'attributo rel per salvare il colore originario, quando tale attributo ha ben altri fini, scopi e motivazioni.

    Per prima cosa direi di scrivere la tabella direttamente nella struttura di markup della pagina:

    codice:
    <table id="voti">
       <caption>
          I voti della classe 1A.
       </caption>
       <thead>
          <tr>
             <th scope="col">Allievo</th>
             <th scope="col">Voto</th>
          </tr>
       </thead>
       <tbody>
          <tr>
             <td>Aldo</td>
             <td>10</td>
          </tr>
          <tr>
             <td>Bruno</td>
             <td>8.5</td>
          </tr>
          
       </tbody>
    </table>
    Poi preparerei delle classi CSS per dare i colori alle righe:

    codice:
    .riga_pari
    {
       background-color:#CCC;
    }
    .riga_dispari
    {
       background-color:#DDD;
    }
    .riga_pari_hover
    {
       background-color:#DDE;
    }
    .riga_dispari_hover
    {
       background-color:#CDCDF7;
    }
    Infine, con un javascript non intrusivo, andiamo ad assegnare le classi ai vari elementi della tabella:

    codice:
    window.onload = function()
    {
       var tabella = document.getElementById('voti')
       var tabella_corpo = tabella.getElementsByTagName('tbody').item(0)
       var righe = tabella_corpo.getElementsByTagName('tr')
    
       for (var i = 0; i < righe.length; i++)
       {
          if ( i % 2 )
          {
             righe.item(i).className = 'riga_pari'
          }
          else
          {
             righe.item(i).className = 'riga_dispari'
          }
       }
    
       for (var i = 0; i < righe.length; i++)
       {
          righe.item(i).onmouseover = function()
          {
             if ( i % 2 )
             {
                righe.item(i).className = 'riga_pari_hover'
             }
             else
             {
                righe.item(i).className = 'riga_dispari_hover'
             }
          }
    
          righe.item(i).onmouseout = function()
          {
             if ( i % 2 )
             {
                righe.item(i).className = 'riga_pari'
             }
             else
             {
                righe.item(i).className = 'riga_dispari'
             }
          }
       }
    }
    Se javascript viene disattivato, le informazioni sono comunque accessibili. Per la grafica abbiamo usato lo strumento appropriato. Abbiamo rispettato il markup lasciandogli fare il suo lavoro, senza inquinarlo con elementi superflui o addirittura usati in modo inappropriato.

    Ma son pirla io, o mi sembra davvero un modo di lavorare più intelligente e pulito?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    indubbiamente hai ragione
    Grazie anche per la tua soluzione.
    Ma il progetto a cui lavoro è fondamentale javascript (è una specifica di progetto) e quindi non sto a pensare se js fosse disabilitato...perche in tal caso la tabella sarebbe l'ultimo dei miei problemi...

    Grazie a tutti e due

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.