Newsgroup: it.comp.lang.javascript
Titolo: cambiare il BG delle celle "sfumando" la tabella

Ciao a tutti.
Devo realizzare uno script con questo compito: prendere le celle di una
tabella (solo di quella però) e cambiarne il colore di sfondo una a una, e a
ogni cella schiarire il colore rispetto alla precedente. 
In sostanza: 
-prendi le celle tramite Class 
-definisci il colore iniziale 
-cambia il colore della prima cella 
-schiarisci il colore definito
-ricomincia 
Alla fine dovrebbe assomigliare a questo: 
code:--------------------------------------------------------------------------------
<script language="JavaScript1.2" type="text/javascript">
function cambiargbPro() {
var b=102;
   if(document.getElementsByClassName) { 
      for(i=0; i < document.getElementsByClassName("cella").length; i++){
         x="rgb(00,00,"+b+")";
document.getElementsByClassName("cella")[i].style.backgroundcolor=x;
               b=b+10;			
      }
   }
}
</script>
	....................
<body onLoad="cambiargbPro()"> 
	....................
<td class="cella">prova</td> 
--------------------------------------------------------------------------------
Nel browser non dà errori, ma semplicemente non funziona (le celle restano
bianche). 
Qualsiasi aiuto è ben accetto.
Grazie!
SB

Spider Baby  ha scritto:
| Devo realizzare uno script con questo compito: prendere le celle di una
| tabella (solo di quella però) e cambiarne il colore di sfondo una a una, e a
| ogni cella schiarire il colore rispetto alla precedente.
| In sostanza:
[...cut...]
|    if(document.getElementsByClassName) {
| Nel browser non dà errori, ma semplicemente non funziona (le celle restano
| bianche).
| Qualsiasi aiuto è ben accetto.
| Grazie!
Ciao Spider Baby,
    un motivo per cui non funziona è perchè document.getElementsByClassName
non rientra nelle specifiche di javascript, cioè in sostanza non è implementata
nel linguaggio.
Da 
http://blog.mooncalf.me.uk/archive/2003/03/24/GettingElementsByClass
Was doing software project work, and found (or refound, if that's a word) that JavaScript has no document.getElementsByClassName
function. I needed such a function, so I wrote one...
document.getElementsByClassName = function ( class_name ) {
    var all_obj, ret_obj = new Array(), j = 0;
    if ( document.all )
        all_obj = document.all;
    else if ( document.getElementsByTagName && !document.all )
        all_obj = document.getElementsByTagName ( "*" );
    for ( i = 0; i < all_obj.length; i++ ) {
        if ( all_obj[i].className == class_name) {
            ret_obj[j++] = all_obj[i];
        }
    }
    return ret_obj;
}
La funzione come vedi restituisce un' array di elementi con la classe che gli passi
come stringa-paramentro.
Inizia aggiungere la funzione sopra e vedi se così funziona, avrai comunque eliminato un
problema.
Ciao!
    SantaKlauss

problema.
Uhm, non mi funziona, ma probabilmente avrň sbagliato ancora qualcosa (so
pochino di JS. Ho cambiato la mia funzione cosě:
code:--------------------------------------------------------------------------------
function cambiargbPro() {
var r=00;
var g=00;
var b=102;
document.getElementsByClassName = function (cella) {
    var all_obj, ret_obj = new Array(), j = 0;
    if ( document.all )
        all_obj = document.all;
    else if ( document.getElementsByTagName && !document.all )
        all_obj = document.getElementsByTagName ( "*" );
    for ( k = 0; k < all_obj.length; k++ ) {
        if ( all_obj[k].className == cella) {
            ret_obj[j++] = all_obj[k];
        }
    }
    return ret_obj;
}
	if(document.getElementsByClassName) { 
		for(i=0; i < document.getElementsByClassName.length; i++){
			x="rgb(00,00,"+b+")";
document.getElementsByClassName[i].style.backgroundcolor=x;
			b=b+10;			
		}
	}
}
-------------------------------------------------------------------------------------
Ho cioč inserito la nuova "variabile" dandole l'oggetto della class (cella),
e togliendolo nella seconda funzione. Cosa manca ancora?

 Cominciavo a intuirlo  :)  Anche se suona cosě bene......
Usando Javascript 1.5 e i browser Gecko-based puoi fare tutti i 
"getElementsByQuelloCheTiPare" che vuoi :) Peccato che, benche' sia uno 
standard, IE non lo implementi.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

Bentornato caro Zer0, spero la tua assenza sia dovuto a qualcosa di
piacevole...

 piacevole...
Purtroppo no.
E' un periodo piuttosto nero, sono dovuto andare a Napoli di corsa da 
Milano perche' una mia amica aveva avuto complicazioni durante un 
operazione.
Fortunatamente e' andato tutto bene, ma sono sorti problemi di varia 
natura dovuti a questo mio gesto; in piu' sto perdendo l'affetto di 
persone a me particolarmente care.
Da luglio, sta andando tutto a rotoli.
