Newsgroup: it.comp.lang.javascript
Titolo: Passaggio Colori

Salve a tutti ragazzi,
dopo mille prove e mille insuccessi provo a chiedere consiglio a voi.
Ho un form con un campo input:
<input name="background" type="text" id="background" size="8" />
e un Div che contiene una scritta:
<DIV ID="titolo" STYLE="font:800 13px Verdana">Main Title</DIV>
Ora il mio problema sta in questo,
Vorrei poter inserire un colore in formato esadecimale (tipo #AF0012) 
nel campo input "background" per fare in modo che istantaneamente la 
scritta contenuta nel Div "titolo" cambi il proprio colore in quello 
inserito in formato esadecimale.
Ho fatto molte prove ma non so come venirne a capo.
Spero qualcuno di voi possa aiutarmi.
Saluti e Grazie a tutti.

Troutman ha scritto:

metti un <input type=button> e sull'onclick fai passare ad una funzione
definita nell'<head> il valore contenuto nel campo background;
la funzione non fa altro che ottenere un riferimento al div con
id=titolo
e settare il colore a quel div.
rae


 inserito in formato esadecimale.
Qualcosa su cui lavorare:
<script type="text/javascript">
	function setBGColor(el,val){
		var re = /^#([0-9A-F]{3}|[0-9A-F]{6})$/i;
 
		 if ( re.test(val) ){
		 	el.style.backgroundColor = val;
		}
	}
</script>
<input type="text"
onkeyup="setBGColor(document.getElementById('titolo'),this.value)" />
Ricordati però, che a differenza di altri browser, IE non gestisce
nell'onkeyup alcuni tasti come il backspace, demandando la cosa
all'onkeypress.
Se non ti interessa un cambio veramente "istantaneo", puoi sempre associare
il tutto all'onblur.
-- 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 
Ci siamo quasi ZERO, sei stato molto gentile.
Dico quasi perchč il tuo esempio funziona perfettamente ma Ma anzichč 
colorarmi il testo contenuto nel DIV mi colora il background del DIV 
lasciandomi la Scritta colorata di nero.
ho provato a sostituire backroundColor con fColor ma non si colora piů 
nulla cosě.
Dove sbaglio?
Grazie infinite per l'aiuto finora datomi.
T.

 Dove sbaglio?
Sbagli il nome della proprietà: è color, non fColor, quindi l'istruzione
  el.style.backgroundColor = val;
deve diventare
  el.style.color = val;
-- 
Nando [?]
Apostolo della Prova

 Grazie infinite per l'aiuto finora datomi.
De nada.


 
Pauroso! funziona perfettamente.
Ho solo un (lo giuro solenemente) un ultimo quesito:
il campo input ha di defoult ad esempio:
value="#AF1234"
Come faccio a fare in modo che cquando mi carica la pagina per la prima 
volta il testo sia colorato automaticamente con il colore preimpostato 
da value??
Attualmente non succede e devo cliccare e/ selezionare il valore di 
defoult per fare in modo che la scritta cambi il colore.
cè qualche altra cosa che devo Aggiungere?
Grazie infinite, Gentilissimi!
T.


Non sapevo...Il framework lato server che sto usando lo fa (JavaServer 
Faces).
Puoi dirmi che problemi si incontrano cosi' magari giro agli sviluppatori la 
cosa? 

 da value??
Presupponendo che tu abbia cambiato il nome della funzione da "setBGColor" a
"setColor":
window.onload = function(){
	setColor( document.getElementById("titolo"),
document.getElementById("background").value );
}
Dove "background" è l'id del campi input.


 cosa?
Internet Explorer fa un unico calderone di ID e NAME. I metodi standard del
w3c su tale browser, si basano cmq sullo stesso codice che sta dietro a
document.all (da alcune prove credo, in verità, che non siano altro che dei
banali wrapper di quest'ultimo). Da qui la necessità di evitare l'uso di ID
e NAME "duplicati": laddove nei browser standard, sono due cose ben
distinte, non lo sono in IE.
