[javascript] dubbio su una funzione
Ciao a tutti
ho dei problemi con una funzione che, ricorsivamente, dovrebbe cambiare il colore di sfondo di tre paragrafi, a distanza di un secondo l'uno da l'altro, così da far sembrare che avvenga una "scansione" del testo. (spero di essermi fatto capire
) vi posto il codice:
Laboratorio
con questo codice mi viene cambiato solo il colore di sfondo dell'ultimo paragrafo. Grazie per le eventuali risposte

ho dei problemi con una funzione che, ricorsivamente, dovrebbe cambiare il colore di sfondo di tre paragrafi, a distanza di un secondo l'uno da l'altro, così da far sembrare che avvenga una "scansione" del testo. (spero di essermi fatto capire

ciao a tutti
oggi è una bella giornata
che caldo che fa
con questo codice mi viene cambiato solo il colore di sfondo dell'ultimo paragrafo. Grazie per le eventuali risposte

Risposte
TI cambia solo l'ultimo perché la proprietà di stile dei precedenti non è 'white'... aggiungi una cosa simile
if (primo.style.background == "white" || primo.style.background == "")
Anche se non è detto funzioni (forse non definito != "", ma vado a memoria e non sono sicuro). Al limite pre-imposta lo sfondo a "white"...
if (primo.style.background == "white" || primo.style.background == "")
Anche se non è detto funzioni (forse non definito != "", ma vado a memoria e non sono sicuro). Al limite pre-imposta lo sfondo a "white"...
infatti al primo giro la funzione deve cambiare il colore solo alla prima riga e poi finire; dopo un secondo deve essere richiamata e cambiarlo alla seconda riga e poi dopo un altro secondo alla terza, quindi quando la condizione nell'if non è verificata (per esempio al secondo giro) deve saltare le istruzioni del primo if ed andare all'else if, infatti al secondo giro lo sfondo della prima riga è rosso, impostato al primo giro. Spero di averti fatto capire le mie intenzioni
mi scuso altrimenti

Infatti avevo capito in quel modo: al "primo giro" non cambia colore perche il colore di fondo dell'elemento non è 'white' ma è indefinito, e quindi il confronto per verificare se sia uguale a 'white' è falso. Puoi anche - meglio? - cambiare il metodo di confronto, invece di controllare se è bianco (e non lo è, perché non è definito il colore), controlla non sia già stato impostato a rosso:
if (primo.style.backgroud <> "red") ..
else if (secondo.style.background <> "red"> ...
if (primo.style.backgroud <> "red") ..
else if (secondo.style.background <> "red"> ...
ho cambiato il metodo di confronto in questa maniera:
if (primo.style.background !== "red") ...
else if (secondo.style.background !== "red"> ...
solo che ora cambia lo sfondo solo alla prima riga, le altre due rimangono bianche
forse faccio un errore logico col return, mi spiego meglio: bloccando la funzione, esso non è che blocca anche il setInterval? ovvero una volta interrota la funzione, non è più possibile richiamarla?
if (primo.style.background !== "red") ...
else if (secondo.style.background !== "red"> ...
solo che ora cambia lo sfondo solo alla prima riga, le altre due rimangono bianche

forse faccio un errore logico col return, mi spiego meglio: bloccando la funzione, esso non è che blocca anche il setInterval? ovvero una volta interrota la funzione, non è più possibile richiamarla?
No la definizione onLoad è corretta. Semplicemente l'operatore !== è "strict not equal", e quindi probabilmente reimposta ad ogni ciclo "red" come attributo di "background"; prova ad usare l'operatore "!=", oppure anche gli indici di colore.
EDIT. Effettivamente il tuo ciclo non si ferma mai... dovresti aggiungere un po' di codice che - alla fine della "coloratura" dell'ultimo elemento che ti interessa, rimuove il setInterval.
EDIT. Effettivamente il tuo ciclo non si ferma mai... dovresti aggiungere un po' di codice che - alla fine della "coloratura" dell'ultimo elemento che ti interessa, rimuove il setInterval.
innanzitutto grazie per le risposte
niente da fare, ho cambiato ma il problema rimane, comunque cosa intendi per "indici di colore"? Magari il prof ce ne ha parlato sotto un altro nome

niente da fare, ho cambiato ma il problema rimane, comunque cosa intendi per "indici di colore"? Magari il prof ce ne ha parlato sotto un altro nome

innanzitutto grazie per le risposte
niente da fare, ho cambiato ma il problema rimane, comunque cosa intendi per "indici di colore"? Magari il prof ce ne ha parlato sotto un altro nome

niente da fare, ho cambiato ma il problema rimane, comunque cosa intendi per "indici di colore"? Magari il prof ce ne ha parlato sotto un altro nome

Stiamo incartandoci forse per un nonnulla...
La proprietà "background" non indica solo il colore, quindi puoi impostare "red" (e prenderà un colore) ma non riporta mai solo il colore ma l'intero stile. Usa pertanto "background-color", dovrebbe funzionare.
[ Mea culpa: si parla di colore, pensavo di usare automaticamente background-color, altrimenti me ne sarei accorto subito :\ ]
La proprietà "background" non indica solo il colore, quindi puoi impostare "red" (e prenderà un colore) ma non riporta mai solo il colore ma l'intero stile. Usa pertanto "background-color", dovrebbe funzionare.
[ Mea culpa: si parla di colore, pensavo di usare automaticamente background-color, altrimenti me ne sarei accorto subito :\ ]
if (primo.style.background-color !== "red")
ho scritto così, solo che adesso non fa più niente XD nessuna proprietà è cambiata.
Ho provato veramente qualsiasi combinazione di codici prima di postare qui (settando e riprendendo dopo gli attributi, if dentro if ecc...), sono alla frutta
cominciano a scarseggiare le idee, secondo me comunque è un problema del return col setInterval
ho scritto così, solo che adesso non fa più niente XD nessuna proprietà è cambiata.
Ho provato veramente qualsiasi combinazione di codici prima di postare qui (settando e riprendendo dopo gli attributi, if dentro if ecc...), sono alla frutta


Semmai
- if (primo.style.backgroundColor != "red") ...
o anche
- if (primo.style.backgroundColor !== "red") ...
in quanto "background-color" nei CSS, "backgroundcolor" in JS.
- if (primo.style.backgroundColor != "red") ...
o anche
- if (primo.style.backgroundColor !== "red") ...
in quanto "background-color" nei CSS, "backgroundcolor" in JS.



Prego.
Beh, anche se qui non era il caso (mi sono solo confuso), questo è vero. Fare script lato client può essere veramente rognoso.
"Blackorgasm":
quante finezze ci sono in javascript!
Beh, anche se qui non era il caso (mi sono solo confuso), questo è vero. Fare script lato client può essere veramente rognoso.