Newsgroup: it.comp.lang.javascript
Titolo: Immagine secondo orario

Ho trovato uno script che dovrebbe far vedere un'immagine a secondo
dell'orario. Ma non mi funziona...... Sapreste dirmi dove sbaglio?
Grazie
<script language="Javascript" type="text/javascript">
var adesso=new Date();
var ore=adesso.getHours();
var minuti=adesso.getMinutes();
if (ore>=7 && ore<8)
  immagine=immagini/n001;
else if (ore>=8 && ore<9)
  immagine=immagini/n003;
else if (ore>=9 && ore<10)
  immagine=immagini/n002;
if (ore>=10 && ore<11)
  immagine=immagini/n004;
else if (ore>=11 && ore<12)
  immagine=immagini/n005;
else if (ore>=12 && ore<13)
  immagine=immagini/n006;
if (ore>=13 && ore<14)
  immagine=immagini/n007;
else if (ore>=14 && ore<15)
  immagine=immagini/n008;
else if (ore>=15 && ore<16)
  immagine=immagini/n009;
if (ore>=16 && ore<17)
  immagine=immagini/n010;
else if (ore>=17 && ore<18)
  immagine=immagini/n011;
else if (ore>=18 && ore<19)
  immagine=immagini/n012;
else
  immagine=immagini/n032;
document.write("<img src=\"img"+immagine+".jpg\" alt=\"\">");
</script>

   immagine=immagini/n001;
            ^^           ^^
Gli apici:
immagine="immagini/n001";
Enrico


Ti ringrazio. Ho fatto ma non funziona ugualmente
http://www.radiomxt.com/provaonair/sabato2.htm

 document.write("<img src=\"img"+immagine+".jpg\" alt=\"\">");
                             ^^^
Forse doveva essere qualcosa tipo:
document.write("<img src=\""+immagine+".jpg\" alt=\"\">");
?
(hai "img" in più all'inizio del src di <img>)
Enrico


E' vero, grazie......era proprio quel problema.....
una sola curiosità, se invece di farle girare ogni ora volessi farlo
fare ogni mezz'ora, non basta cambaire in
else if (ore>=14 && ore<14.30)
  immagine=immagini/n008;
else if (ore>=14.30 && ore<15)
  immagine=immagini/n009;
vero? Perchè ci ho provato, ma ovviamente non va!!!!!

   immagine=immagini/n008;
ore lo ottieni con getHours() che, come dice il nome, restituisce solo
l'ora ... 
http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/getHours
per avere anche i minuti devi estrarre anche quelli e fare un doppio if,
oppure usare direttamente la data con uno dei migliaia di datediff che
troverai in giro.
http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/getMinutes
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 else if (ore>=14 && ore<14.30)
Eheh.. no. :)
Per ottenere i minuti devi usare getMinutes() invece di getHours(), e
otterrai un numero intero che va da 0 a 59 rappresentante, appunto, i
minuti.
-- 
~ "Uccidere è proibito, quindi tutti gli assassini vengono puniti,
a meno che non uccidano su larga scala e al suono delle trombe."
(Voltaire)


Intanto ringrazio entrambe.
x ZERO: le immagini sono 48 una, appunto, per ogni mezz'ora.....per 24
ore
 Scusate, ma come si evince, di javascript ne capisco poco e nulla.
"per avere anche i minuti devi estrarre anche quelli e fare un doppio
if,"    scusa Cristiano, ma non capisco: doppio if di cosa?
"Per ottenere i minuti devi usare getMinutes() invece di getHours()"
cioè devo togliere getHours() visto che getMinutes() c'è già?
Scusate l'ignoranza  -ma non sono intollerante, Cristiano ;) -

 Scusate l'ignoranza  -ma non sono intollerante, Cristiano ;) -
:-)
-- 
"Capivamo di essere tanti
 capivamo di essere forti,
 il problema era solamente
 come farlo capire ai morti."
									    C.L.

 x ZERO: le immagini sono 48 una, appunto, per ogni mezz'ora...
Se hai una nomenclatura congrua, io ti consiglio di utilizzare sempre
l'approccio che ti ho indicato sopra: condensi tutto il tuo script in
quelle poche righe. Ad esempio, se tu avessi le suddette immagini:
n000.jpg // mezzanotte
n000b.jpg // mezzanotte e mezza
n001.jpg // l'una
n001b.jpg // l'una e mezza
.
.
n023.jpg // le undici di sera
n023b.jpg // le undici e mezza di sera
Ti basterebbe modificare lo script che ti ho dato, usando getMinutes,
in modo che vada ad aggiungere "b" al nome dell'immagine, se i minuti
sono uguali o superiori a 30:
	var 	today 	= new Date(),
		h	= today.getHours(),
		b	= today.getMinutes() > 29?"b":"";
	if ( h < 10 )
		h = "0"+h;
 
	document.write("<img src=\"immagini/n0"+ore+b+".jpg\" alt=\"\" />");
-- 
~  "Nei  film americani, qualsiasi problema che  venga considerato
 sufficientemente catastrofico, puo' essere risolto facendo esplodere
uno o piu' ordigni nucleari" (ZER0  & Cosimo)


E' mattina, sono più fresco e lucido qundi nuovamante ringrazio
ENTRAMBIIII!!!!
La logica delle foto è più o meno questa: a mezzanotte appare la n001
a mezzanotte e mezza appare la 002 all'una la 003, ma seguire lo
script di ZERO e rinominare le foto non è un grosso problema e lo
proverò in giornata.
Invece Cristiano mi consiglia, quindi, di far diventare la cosa
così?:
<script language="Javascript" type="text/javascript">
var adesso=new Date();
var ore=adesso.getHours();
var minuti=adesso.getMinutes();
if (ore>=7 && ore<8)
if(minuti<30)
  immagine="immagini/n001";
else immagine="immagini/n002";
Giusto?

 Giusto?
sì, ma io partivo dal tuo script ... ovviamente quello di Zer0 è 100 volte
meglio.
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.


wrote:

Infatti il tuo sta funzionando alla grande......
Quello di ZERO lo sto "preparando"......

 proverò in giornata.
In tal caso, puoi comunque modificare lo script in modo che segua tale
logica. Non è necessario cambiare le foto.
Quindi tu hai 48 file, chiamati: n001.jpg, n002.jpg.. fino a n048.jpg.
Lo script sarà quindi:
	var 	today 	= new Date(),
		h	= (( today.getHours()<<1 )+1)+( (today.getMinutes()/30)|0 );
	if ( h < 10 )
		h = "0"+h;
 
	document.write("<img src=\"immagini/n0"+h+".jpg\" alt=\"\" />");
(Nota: nello script precedente avevo erroneamente lasciato "ore")
Rapidamente ti spiego cosa fa questa riga:
	var h = (( today.getHours()<<1 )+1)+( (today.getMinutes()/30)|0 );
(( today.getHours()<<1 )+1)
Prende le ore della data corrente, le moltiplica per due (shifta di un
bit a sinistra, equivale a moltiplicare per due) e aggiunge uno.
Questo perché le tue immagini non partono da "zero" ma da "uno". Così,
nel caso sia mezzanotte, avrai:
	0x2+1 = 1
La seconda parte è per le mezz'ore:
( (today.getMinutes()/30)|0 )
Prende i minuti, li divide per 30 e poi fa un OR a bit usando lo zero,
che ha come effetto collaterale, quello di trasformare il risultato in
intero. In questo modo se i minuti sono inferiori a 30 ottieni 0, e se
sono superiori ottieni 1.
Quindi, se fosse mezzanotte e trentacinque, avresti:
	(0x2+1)+1
Ovvero 2.
-- 
~ Tenete la morte lontano dalle strade. Guidate sul marciapiede.

");
stava funzionando.......poi hi provato il secondo codice e ora non va
più......
http://www.radiomxt.com/provaonair/mercoledi.htm
dov'è l'arcano?

 dov'è l'arcano?
"l'arcano" sta almeno nel fatto che ti manca lo script di chiusura.
:)
Inoltre "h" deve essere minore di 10, non di 11.
Ovviamente, questa versione ti funziona se hai rinominato i file in
modo corretto.
Altrimenti puoi utilizzare l'ultima che ti ho scritto, basata sulla
tua nomenclatura originale.
-- 
~ La realtà è un'illusione causata dall'assenza di alcool.

Aiò ZERO, non so come ringraziarti.......ho scelto la prima opzione
che così mi aiuta a catalogare meglio, con l'aggiunta di b, le
immagini.
L'evoluzione ed il senso di tutto ciò lo vedi su 
www.radiomxt.com
(sito povero proprio perchè in evoluzione).
Avrei ancora molte cose da chiedere, ma non so se devo aprire altri
post!!!
Ma la cosa che non riesco a trattenere è: se invece delle immagini, a
girare agli orari, fossero delle pagine html?
Ma forse pretendo troppo.
Comunque grazie a tutti

 girare agli orari, fossero delle pagine html?
anzich� document.write userai window.location.href alla pagina corretta ...
-- 
"Io odio
 perch� sfruttati si nasce magari ci si diventa
 per� non lo si inventa"
									99

");
</script>
Perchè sono così imbranato che non mi funziona?
?????

 Perchč sono cosě imbranato che non mi funziona?
non sei imbranato, solo che per costruire una casa occorre prima sapere
come costruire le fondamenta, altrimenti non vai da nessuna parte.
Sintassi di window.location.href:
 
http://developer.mozilla.org/en/DOM/window.location
(č una stringa, non un metodo)
-- 
"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.

 come costruire le fondamenta, altrimenti non vai da nessuna parte.
 mi sa che non sono buono nemmeno di fare il magùtt (manovale): ci ho
capito un'ostrica.........

 capito un'ostrica.........
che cosa non hai capito? copioincollo il primo esempio nella pagina:
Replace the current document with the one at the given URL: 
function goMoz() { 
   window.location = "
http://www.mozilla.org
";
} 
// in html: <button onclick="goMoz();">Mozilla</button>


  come farlo capire ai morti."
Ma le metti tu queste bellisime frasi?  Claudio Lolli D'epoca!!!!

 Ma le metti tu queste bellisime frasi?  Claudio Lolli D'epoca!!!!
:-) s�, random in un elenco che ho creato
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

<script language="Javascript" type="text/javascript">
 var today = new Date(),
                h = today.getHours(),
                b = today.getMinutes() > 29?"b":"";
        if (h <10)
                h = "0"+h;
function goMoz() {
   window.location = "onweb/mercweb0"+h+b+".htm;
}
</script>
 questo è il massimo che mi viene....
e ovviamente non funziona.
Forse sto pretendendo troppo da me e da voi

vi sto facendo perdere tempo, eh?


-- 
~ Non esistono donne brutte. Dipende solo da quanta vodka bevi.
(proverbio russo)

>         window.location = "onweb/mercweb0"+h+b+".htm";
Ragazzi, non so come ringraziarvi, non avete idea di che enorme aiuto
mi avete dato!
Prometto che prima o poi, quando avrò un po' di tempo, cercherò di
seguire le vostre indicazioni e di approfondire lo "studio"
dell'argomento.
Per ora un enorme GRAZIE