Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489

    cambiare dinamicamente colore di sfondo su una tabella

    ciao a tutti!

    ho una tabella molto larga, e quando vado verso destra perdo la colonna che contiene il valore di riferimento. (id)

    cio che vorrei fare é che una volta che ho scelto una riga della tabella clicco su una cella qualsiasi di quella riga, e lo sfondo della intera riga viene colorato. non appena ne selziono un altra, quella riga torna bianca.

    si puo fare?

    grazie

    ciao

    igor

  2. #2
    metti di avere la tabella con id = "MyTable", metti questo script:

    codice:
    var rows;
    var colorClick = '#ffff66', colorUnclick = '#FFF';
    window.onload = function(){
    	var tab = document.getElementById('MyTable');
    	rows = tab.getElementsByTagName('tr');
    	for(i = 0; i < rows.length; i++)
    	{
    		rows[i].onclick = function(){
    			for(j = 0; j < rows.length; j++)
    			{
    				rows[j].style.backgroundColor = rows[j] == this ? colorClick : colorUnclick;
    			}
    		}
    	}				
    }
    Dovrebbe andare.

    Per customizzarlo: colorClick è il colore che la riga cliccata prende, colorUnclick sono tutte le altre righe, modifichi la stringa "MyTable" in var tab = document.getElementById('MyTable'); con l'id della tua tabella per applicare l'effetto.
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    mmmmmmmmmititccccccoooooooooo

    funziona perfettamente! grazie mille!

    non mi é molto chiaro il funzionamento dello script, (cioé in termini di programmazione) ma finche funziona va bene.. grazi emille!

    ciao

    igor

  4. #4
    scusa, se non ti è chiaro qualcosa chiedi...
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ciao!

    ritorno a questo topic dopo tanto tempo.

    é possibile fare la stessa cosa per le colonne invece delle righe?

    ho provato a sostituire tr con td ma non funziona.

    grazie

    ciao

    igor

  6. #6
    guarda è un cosa un pelo diversa (e se conosci un minimo le HTML table ti rendi conto del perché), tra l'altro mi viene un hictus al vedere la m###a di codice che ho scritto...

    dunque fasom le cose per bene:

    Codice PHP:
     var SelectRow = function(){
        var 
    tr this.parentNode;
        var 
    tbody tr.parentNode;
        for(var 
    tmptr tbody.firstChildtmptr != nulltmptr tmptr.nextSibling){
            if(
    tmptr.nodeType == 1){
                if(
    tmptr.tagName.toUpperCase() == "TR"){
                    var 
    colorToApply unselectColor;
                    if(
    tmptr == trcolorToApply selectColor;
                    for(var 
    tmptd tmptr.firstChildtmptd != nulltmptd tmptd.nextSibling){
                        if(
    tmptd.nodeType == && tmptd.tagName.toUpperCase() == "TD")
                            
    tmptd.style.backgroundColor colorToApply;
                    }
                }
            }
        }
    }

    var 
    SelectColumn = function(){
        var 
    tr this.parentNode;
        var 
    indexTD 0;
        var 
    allCell tr.getElementsByTagName("td");
        for(var 
    0allCell.lengthi++){
            if(
    allCell[i] == thisindexTD i;
        }
        
        var 
    tbody tr.parentNode;
        for(var 
    tmptr tbody.firstChildtmptr != nulltmptr tmptr.nextSibling){
            if(
    tmptr.nodeType == 1){
                if(
    tmptr.tagName.toUpperCase() == "TR"){
                    var 
    index 0;
                    for(var 
    tmptd tmptr.firstChildtmptd != nulltmptd tmptd.nextSibling){
                        if(
    tmptd.nodeType == && tmptd.tagName.toUpperCase() == "TD"){
                            var 
    colorToApply unselectColor;
                            if(
    indexTD == index++) colorToApply selectColor;                
                            
    tmptd.style.backgroundColor colorToApply;
                        }
                    }
                }
            }
        }
    }



    var 
    FunctionToApply SelectColumn//Qui ci metti la funzione che vuoi usare se selezionare la riga o la colonna
    var tableID "IDTabella";
    var 
    selectColor "#cecece"unselectColor "#FFF";


    var 
    Init = function(){
        var 
    theTable document.getElementById(tableID);
        if(!
    theTable) throw "Something does not work: are you sure of the Table ID?";

        var 
    tmp theTable.getElementsByTagName("tbody")[0] || theTable;

        var 
    cells tmp.getElementsByTagName("td");

        for(var 
    0cells.lengthi++){
            
    cells[i].onclick FunctionToApply;
        }
    }

    window.onload Init
    Su Firefox funzica, manon ho avuto il tempo di provarlo anche su IE (su Safari3, Opera9 e Google Chrome va). Fai attenzione a definire le funzioni PRIMA di FunctionToApply, sennò te lo ritrovi vuoto.
    I DON'T Double Click!

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ciao!

    grazie mille funziona!

    sia su ff che su IE.

    pero ho un piccolo problema. la tabella ha le celle colorate di vari colori in base al contenuto, e quando clicco una colonna tutte le altre colonne diventano bianche.. la versione precedente invece non lo faceva. si puo far in modo che mantengano il proprio colore?

    grazie

    ciao

    igor

    -----------EDIT----------------------

    si puo invece che cambiare il colore aggiungere al contenuto della cella una X? cioé contenuto cella = cella X

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ho risolto mettendo il bordo della tabella a 0px invece che cambiare il colore.. grazie!

    ciao

    igor

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.