Newsgroup: it.comp.lang.javascript
Titolo: css refresh via javascript

Ciao a tutti.
Ho la necessità di evidenziare con uno sfondo rosso tutti gli input di una
tabella che hanno il valore vuoto.
Ho quindi scritto il seguente css:
.test INPUT[value=""] {
 background-color: red;
}
Ed ho creato una pagina di test in questo modo:
<TABLE class="test">
<TR><TH>Tit1</TH><TH>Tit2</TH></TR>
<TR><TD>Fld1</TD><TD><INPUT TYPE="text" VALUE="12"></TD></TR>
<TR><TD>Fld2</TD><TD><INPUT TYPE="text" VALUE=""></TD></TR>
<TR><TD>Fld3</TD><TD><INPUT TYPE="text" VALUE="0"></TD></TR>
</TABLE>
Tutto funziona!
Il problema è che quando vado sul secondo campo e gli scrivo dentro
qualchecosa lo sfondo del campo non cambia!
La soluzione è di dire al DOM (via javascript) di rivalutare i fogli di
stile con un'istruzione "refresh" (o meglio a rigor di logica credo che
questa sia la soluzione!)
Sto' farneticando? Nessun altro ha mai avuto questo problema?
Grazie delle risposte... Ciao

 Tutto funziona!
Tutto funziona???? Lo starai testando con Mozilla o simile, immagino:
questa feature css2 IE manco sa cosa sia. Lo hai aperto con una qualsiasi
versione di IE, anche l'ultima (IE6sp1) ? (non ho provato se hanno
migliorato qualcosa con la nuova versione distribuita con xpsp2).
Comunque per cambiare classe basta usare className (per esempio
onkeyup="this.className='altraclasse'"), ma non penso questo possa
risolvere il tuo problema.
Fai sapere se ti serve solo per Mozilla, altrimenti occorre cambiare
completamente approccio (es.
onkeyup="this.style.backgroundColor=(this.value==''?'red':'white')" )
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.
--

 onkeyup="this.style.backgroundColor=(this.value==''?'red':'white')" )
Hai ragione... Sto' lavorando unicamente con Mozilla. (mia dimenticanza...
dovevo riportarlo già dall'inizio!)
IE non lo sto' considerando nemmeno di striscio (me lo posso permettere in
quanto il tutto girerà in intranet!)
E purtroppo no... cambiare il nome della classe non funziona (sarebbe stato
troppo semplice!)  ;-)
In realtà a me serve solo far capire al browser che quelli con "value" vuoto
devono avere il background rosso mentre quelli che hanno "value" non vuoto
non hanno nessun stile particolare (prenderanno qualche stile definito a
livello superiore).
Non volevo utilizzare javascript per modificare lo stile "inline" in quanto
utilizzando i css riesco a personalizare meglio il comportamento (anzichè
rosso lo metto blu oppure agisco sui bordi anzichè sul background oppure
modifico il font o ancora modifico una certa immagine di sfondo, ...)
PS: perchè il mio esempio (postato nel primo messaggio) non funziona? è una
cosa che ancora nessuno è riuscito a spiegarmi!

 cosa che ancora nessuno č riuscito a spiegarmi!
Immagino sia perché il css non funziona ad eventi...cioč, una volta
caricato quello č. Immagino che se aprendo la pagina ti colora di rosso poi
non č che cambiando il valore cambia improvvisamente il css; non conosco
bene queste potenzialitŕ proprie di Mozilla (proprie del W3 in realtŕ)
perché io sono ahimé legatissimo ad IE anche nella Intranet, perň non penso
abbiano creato dei css ad eventi...
Non vedo altra soluzione che cambiare className, io non conosco altre
soluzioni.
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.
--

 soluzioni.
Ok... grazie dell'aiuto... (anche se non mi sono ancora del tutto arreso!)
Se trovo qualche soluzione alternativa la posto in coda a questo thread

 
cambiando className a volte si crea una specie di sfarfallio bianco, che 
a volte da fastidio.