Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    evidenziare colonne tabella

    ci sono mille funzioni che evidenziano al passaggio del mouse la riga interessata, mentre non ne ho trovati che evidenziano la colonna interessata

    a dire il vero ho trovato una funzione che evidenzia le colonne al passaggio del mouse ma è una estensione di jquery, io invece cercavo qualcosa di indipendente

    sapete se e dove posso trovarla?

    ciao a tutti e buon lavoro

  2. #2
    mmm la colonna... in effetti è un po' incasinato

    Allora, la questione è che per ottenere gli elementi da evidenziare devi ottenere l'indice della cella su cui sei e poi ricercare TUTTE le righe della tabella e per ogni riga evidenziare la cella con indice = a quello trovato.

    Allora ti scrivo una funzione che prende in ingresso una cella e ritorna un array contenente le celle della colonna corrispondente. Tieni presente che se ci sono celle in colspan questo manderà l'effetto a ${espressione poco carina}

    Codice PHP:
    function getColumn(cell)
    {
       var 
    tmp cell.parentNode;
       var 
    allCells tmp.getElementsByTagName('td');
       var 
    index 0;   
       for(
    0allCells.lengthi++)
       {
          if(
    allCells[i] == cell){index i; break;}
       }
       while(
    tmp.tagName.toLowerCase() != 'table')
       {
    tmp tmp.parentNode;};
       var 
    allRows tmp.getElementsByTagName('tr');
       var 
    ret = new Array();
       var 
    counter 0;
       for(
    0allRows.lengthi++)
       {
          
    allCells allRows[i].getElementsByTagName('td');
          
    ret[counter++] = allCells[index];
       }
       return 
    ret;

    A questo punto devi solo applicarlo all'evento onMouseOver e onMouseOut delle celle della tabella con una istruzione per modificare il BG e sei a posto.

    Ad esempio
    Codice PHP:
    window.onload = function(){
        var 
    tds document.getElementsByTagName('td');
        for(
    0tds.lengthi++)
        {
            
    tds[i].onmouseover = function(){
                var 
    col getColumn(this);
                for(
    0col.lengthj++)
                {
                    
    col[j].style.backgroundColor '#fffd98';
                }
            }
            
    tds[i].onmouseout = function(){
                var 
    col getColumn(this);
                for(
    0col.lengthj++)
                {
                    
    col[j].style.backgroundColor '#fff';
                }
            }
        }

    N.B. io ho gestito solo le celle TD, non le TH, ma per quello dovrebbe bastarti modificare leggermente lo script.
    I DON'T Double Click!

  3. #3
    Originariamente inviato da artorius
    mmm la colonna... in effetti è un po' incasinato

    Allora, la questione è che per ottenere gli elementi da evidenziare devi ottenere l'indice della cella su cui sei e poi ricercare TUTTE le righe della tabella e per ogni riga evidenziare la cella con indice = a quello trovato.

    Allora ti scrivo una funzione che prende in ingresso una cella e ritorna un array contenente le celle della colonna corrispondente. Tieni presente che se ci sono celle in colspan questo manderà l'effetto a ${espressione poco carina}

    Codice PHP:
    function getColumn(cell)
    {
       var 
    tmp cell.parentNode;
       var 
    allCells tmp.getElementsByTagName('td');
       var 
    index 0;   
       for(
    0allCells.lengthi++)
       {
          if(
    allCells[i] == cell){index i; break;}
       }
       while(
    tmp.tagName.toLowerCase() != 'table')
       {
    tmp tmp.parentNode;};
       var 
    allRows tmp.getElementsByTagName('tr');
       var 
    ret = new Array();
       var 
    counter 0;
       for(
    0allRows.lengthi++)
       {
          
    allCells allRows[i].getElementsByTagName('td');
          
    ret[counter++] = allCells[index];
       }
       return 
    ret;

    A questo punto devi solo applicarlo all'evento onMouseOver e onMouseOut delle celle della tabella con una istruzione per modificare il BG e sei a posto.

    Ad esempio
    Codice PHP:
    window.onload = function(){
        var 
    tds document.getElementsByTagName('td');
        for(
    0tds.lengthi++)
        {
            
    tds[i].onmouseover = function(){
                var 
    col getColumn(this);
                for(
    0col.lengthj++)
                {
                    
    col[j].style.backgroundColor '#fffd98';
                }
            }
            
    tds[i].onmouseout = function(){
                var 
    col getColumn(this);
                for(
    0col.lengthj++)
                {
                    
    col[j].style.backgroundColor '#fff';
                }
            }
        }

    N.B. io ho gestito solo le celle TD, non le TH, ma per quello dovrebbe bastarti modificare leggermente lo script.
    grazie per la risposta, faccio qualche prova e ti faccio sapere

    grazie per ora

  4. #4
    Originariamente inviato da mansportivo
    grazie per la risposta, faccio qualche prova e ti faccio sapere

    grazie per ora
    funziona veramente bene, l'unica cosa è che non riesco a recuperare il colore di sfondo delle cella prima di cambiarlo, in modo da ricolorarle all'uscita

    ho prova to ad interrogare il colore così:
    alert(col[j].style.backgroundColor);

    ma mi restituisce un undefined

    come mai?

  5. #5
    perché se non la stili espressamente (cioè se la lasci con il colore di default) non ha valore. Di default lo puoi mettere bianco (#FFF) o trasparente ("transparent")
    I DON'T Double Click!

  6. #6
    Originariamente inviato da artorius
    perché se non la stili espressamente (cioè se la lasci con il colore di default) non ha valore. Di default lo puoi mettere bianco (#FFF) o trasparente ("transparent")
    grazie dell'interessamento

    le celle hanno già un colore che prendendo da un css, quindi hanno già un background anche se non dichiarato tramite js

    se fosse possibile intercettare quello avrei risolto il mio problema

  7. #7
    beh, perché style ottiene solo le proprietà settate con l'attributo style="" nel HTML, è anche per questo che uso una libreria per la manipolazione del DOM (tipo Mootools) in modo da evitare di implementare il sistema per ottenere le proprietà definite nei CSS
    I DON'T Double Click!

  8. #8
    Originariamente inviato da artorius
    beh, perché style ottiene solo le proprietà settate con l'attributo style="" nel HTML, è anche per questo che uso una libreria per la manipolazione del DOM (tipo Mootools) in modo da evitare di implementare il sistema per ottenere le proprietà definite nei CSS
    ma ci sarà pure un modo per capire che colore di sfondo ha una cella....

    oppure sto fantasticando....

  9. #9
    Originariamente inviato da artorius
    beh, perché style ottiene solo le proprietà settate con l'attributo style="" nel HTML, è anche per questo che uso una libreria per la manipolazione del DOM (tipo Mootools) in modo da evitare di implementare il sistema per ottenere le proprietà definite nei CSS
    per questo caso specifico ho risolto in modo "spartano" modificando il codice così:

    window.onload = function(){
    var tds = document.getElementsByTagName('td');

    for(i = 0; i < tds.length; i++)
    {
    tds[i].onmouseover = function(){
    var col = getColumn(this);
    for(j = 0; j < col.length; j++)
    {
    //alert (col);
    col[j].style.backgroundColor = '#fffd98';
    }
    }
    tds[i].onmouseout = function(){
    var col = getColumn(this);
    for(j = 0; j < col.length; j++)
    {
    //old col[j].style.backgroundColor = '#fff';
    col[j].style.backgroundColor = '';
    }
    }
    }
    }

    cioè impostando il background color come stringo vuota

    ciao

  10. #10
    puoi anche semplicemente rimuovere l'attributo style dall'elemento:

    col[j].removeAttribute(style);
    I DON'T Double Click!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.