Newsgroup: it.comp.lang.javascript
Titolo: Problema con IE <7 e classe CSS chiamata con Javascript

Ho un serio problema con le versioni di IE precedenti alla 6 (quando
mai!).
Praticamente ho creato un sito diviso in due sezioni: una la carico
dei contenuti mediante ajax e l'altra è un div statico nel quale
carico un immagine di sfondo tramite i css. Ogni volta che un utente
clicca un pulsante del menu carico una diversa classe CSS nel div
senza mai ricaricaricare la pagina.
Firefox, Konqueror, Opera, Safari... addirittura IE 7, tutti
funzionano correttamente... IE6 no (!#@!!)
- le classi CSS sono del tipo:
   .rete { background-image:url(../img/bg1.jpg); }
   .scheda { background-image:url(../img/bg2.jpg);}
- la chiamata è del tipo:
   <a href="javascript:void%200" onclick="loadClass('rightBox',
'rete'); ">Servizi</a>
- dove loadClass è la seguente:
   function loadClass(id, css) {
	   document.getElementById(id).className=css;
   }
- il div target è dichiarato così:
   <div id="rightBox"> ... ... </div>
La cosa divertente è che la classe css me la imposta correttamente, se
per assurdo invece di mettere un immagine di sfondo decido di usare
tinta unita e difinire un background: yellow; green etc funziona, ma
le immagini non le carica mai (solo la prima volta che carico la
pagina mettendo la chiamata loadClass nell'ONLOAD del BODY).
E ora invece la cosa esilarante!
Se se in "loadClass" sparo un alert, un prompt, un confirm DOPO
"document.getElementById(id).className=css;" funziona....
Ho provato di tutto... ad usare ajax, a caricare un Image() con
javascript, il comportamento è sempre lo stesso, non so più che fare,
spero davvero che qualcuno possa aiutarmi e ringrazio fin da subito
chiunque possa darmi una dritta.
Fabian

 	   document.getElementById(id).className=css;
prova a cambiare il nome ai 2 parametri, non si sa mai che IE fa casini
perché id è una proprietà.
La classe è "rete" (tutta minuscola)?
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 La classe è "rete" (tutta minuscola)?
yep:    .rete { background-image:url(../img/bg1.jpg); }
:(
in ogni caso grazie mille!
Fabian

 provato anche questo, nessun miglioramento
allora l'errore è da qualche altra parte, quanto hai scritto DEVE
funzionare con IE6 (a meno di qualche bug su background, che io non uso e
che quindi non so dirti).
Puoi postare una semplicissia pagina che simula questo problema?
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

Colmo dei colmi...
Sto creando una pagina di esempio semplice semplice e cosa succede?...
funziona.
Non capisco proprio, anche perchè praticamente non ho fatto altro che
copia-incolla del codice originale.
Faccio due test, carico da qualche parte la pagina e posto il link.
boh!
Fabian

okkay, identificato il problema, è il javascript:void%200.
Intanto mi scuso perchè evidentemente quando ho provato a sostituirlo
con il # devo averlo fatto distrattamente visto che non me ne sono
accorto subito.
Ora però sorge un altro problema, cosa metto al posto di
javascript:void%200 ?!
Lavorando con ajax ho sempre utilizzato questa notazione in quanto
ritenuta l'unica corretta e compatibile, e non lo dico solo io ma
anche i libri che ho letto al riguardo. Infatti era mia abitudine
utilizzare il cancelletto fino al giorno in cui mi accorsi che in
certi casi partiva un reload della pagina.
Usando la sintassi javascript: void 0 invece non ho mai avuto rogne...
almeno fino ad oggi.
Suggerimenti?

 almeno fino ad oggi.
se metti un return false al termine dell'onclick puoi anche metterci
www.pippo.it
 che (se javascript è abilitato) è irrilevante perché non il
click non viene propagato.
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 certi casi partiva un reload della pagina.
Nei casi in cui non previeni il comportamento di default dell'evento,
in questo caso del click (cosa che puoi fare con return false, tra le
altre cose).
-- 
~ Non sono disordinato. Sono solo un massimizzatore di entropia.

beh, cosa posso dire se non ringraziare? ^_^
grazie mille per l'aiuto!
Fabian

 visitando.
ecco, questo è un gran bel suggerimento.

 ecco, questo č un gran bel suggerimento.
Con buona pace dei libri sui detergenti. :)
-- 
~ Se i sintomi persistono, insultare il medico.

 I libri sui detergenti non li ho mai considerati un granché bene...
In tutta sincerità non disdegno ajax, sicuramente è una tecnologia più
che abusata, ma sono altrettanto convinto che possa migliorare molto
l'usabilità.
Fabian

 l'usabilità.
Era una frase volutamente ironica. :) Evidentemente non "lurki" questo
NG.. Diciamo che la terminilogia "ajax" non è propriamente ben accetta
se usata in un certo modo. :) Niente di male, per carità, è che poi ci
scappano le battute. :)
Comunque, ironia a parte, "ajax" non è una "tecnologia" ma un acronimo
che identifica più "linguaggi" e "tecnologie" usati congiuntamente. Né
più né meno di DHTML, di cui è appunto "l'erede".
-- 
~ "La realtà è ciò che, quando smetti di crederle, non va via."
(Philip K. Dick)

 più né meno di DHTML, di cui è appunto "l'erede".
cmq sì, conosco ajax sia dal punto di vista igienico (sgrassa i vetri
che è una bellezza :P) che dal punto di vista informatico, se non
sbaglio dovrebbe essere Asynchronous Javascript And XML. In relatà non
è nulla di nuovo, come giustamente dici, è un po' come riscoprire
l'acqua calda, però è riscoperta bene.
Lasciamo perdere librerie mostruose come rico o scriptacolus che sono
veramente spettacolari ma a mio avviso un po' troppo pesanti e
sopprattutto (sarà anche sfiga) non mi è mai capitato una volta di
poter fare copia-incolla di una feature e di vederla funzionare senza
che la console mi desse errori in quelle librerie.

 che la console mi desse errori in quelle librerie.
Ehehehe. :)


 Per lurkare s'intende leggere un newsgroup ma non scriverci. :)
A no, di solito non lurko :P ho riscoperto i NG ieri, dopo un mezzo
pomeriggio di ricerche in google per risolvere il mio problema mi son
detto: "proviamo si google groups".
Una volta erano davvero una pacchia poi con l'avvento dei forum hanno
perso di popolarità anche se in definitiva rimangono molto più pratici
esbrigativi :)