Newsgroup: it.comp.lang.javascript
Titolo: script x eventi

ho bisogno di uno script che mi permetta di far apparire una scritta su
una pagina web del tipo "la prox assemblea sarà il giorno x" e poi il
giorno x la scritta cambia in "oggi c'è l'assemblea ...".
quindi lo script dovrebbe tenere in memoria una serie di date che gli
inserisco manualmente e poi in base a quelle e al giorno corrente
formulare la frase.
uno script simile a quello per le date dei compleanni.
mi potete aiutare?? grazie!
ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 mi potete aiutare?? grazie!
Guarda, mi hai trovato giusto in un momento di pausa (leggasi, tornato
dalla mensa), e un po' per diletto ti ho tirato fuori questa roba qua
sotto.
Non e' forse il massimo della vita, ma fa il suo lavoro.. essendo ad
oggetti e' migliorabile.
<script type="text/javascript">
	/* = fastcoded by ZER0 ============================== */
	/* = Implementation ================================= */
	var meetingObject=function(dt,desc){
		this.dt=dt||new Date();
		this.desc=desc||"Non specificato";
		return this;
	}
 
	var Meetings=function(){
		this.items=[];
		this._todayMeetingLabel="#desc#";
		this._nextMeetingLabel="#date#,#desc#";
 
		this.addMeeting=function(szDateString,desc){
			var _arr=szDateString.split(/\D/);			
			this.items[this.items.length]=new meetingObject(new
Date(_arr[2],_arr[1]-1,_arr[0],_arr[3]||0,_arr[4]||0),desc);
		}
 
		this.setTodayMeetingLabel=function(sText){
			this._todayMeetingLabel=sText;
		}
		this.getTodayMeetingLabel=function(desc){
			return this._todayMeetingLabel.replace(/#desc#/,desc);
		}
		this.setNextMeetingLabel=function(sText){
			this._nextMeetingLabel=sText;
		}
 
		this.getNextMeetingLabel=function(dt,desc){
				return
this._nextMeetingLabel.replace(/#date#/,dt.getDate()+"/"+(dt.getMonth()+1)+
"/"+dt.getFullYear()).replace(/#desc#/,desc);
		}
		this.toString=function(){
			var todayTime=new Date();
			todayTime=new
Date(todayTime.getFullYear(),todayTime.getMonth(),todayTime.getDate()).getT
ime();
			for (var i=0;i<this.items.length;i++){
				if (this.items[i].dt.getTime()==todayTime){
					return this.getTodayMeetingLabel(this.items[i].desc);
				}else if (this.items[i].dt.getTime()>todayTime){
					return this.getNextMeetingLabel(this.items[i].dt,this.items[i].desc);
				}
			}
		}
 
		return this;
	}
 
	/* = ================================================ */
 
	/* creo un instanza dell'oggetto che gestisce le varie date */
	var myMeet=new Meetings();
 
	/* imposto il codice HTML che andra' scritto */
	myMeet.setTodayMeetingLabel("Oggi c'e' una bellissima assemblea che ha
come argomento:<strong>#desc#</strong>");
	myMeet.setNextMeetingLabel("La prossima (bellissima) assemblea sara' il
giorno <strong>#date#</strong> con argomento:<strong>#desc#</strong>");
 
	/* aggiungo le date, e se presente , la descrizione */
	myMeet.addMeeting("11/01/2004","dob");
	myMeet.addMeeting("15/03/2004","boh");
	myMeet.addMeeting("11/03/2004","qualcosa");
	myMeet.addMeeting("11/07/2004");
	myMeet.addMeeting("23/07/2004");
 
</script>
<div style="border:1px solid
silver;background:#ffffcc;font-family:Tahoma;text-align:center">
	<script type="text/javascript">document.write(myMeet)</script>
</div>
Spendo due paroline. Il codice che a te effettivamente "serve capire" e'
da:
var myMeet=new Meetings();
in poi.
Prima c'e' tutta l'implementazione dell' "oggettistica varia", necessaria
per far funzionare l'ambaradan, ma completamente trasparente per chi vuole
utilizzare gli oggetti in questione.
In sostanza una volta creata un'istanza dell'oggetto Meetings(), utilizzi i
metodi
setTodayMeetingLabel/setNextMeetingLabel
per impostare la scritta (con eventuale codice HTML) che vuoi che appaia
all'utente. Come nell'esempio, utilizza i marcatori #date# per dire "qua
voglio la data" e "#desc#" per dire "qua voglio la descrizione" all'interno
della stringa. Cmq l'esempio dovrebbe essere abbastanza chiarificatore.
Ovviamente devi ricordarti di aggiungere le date, (in formato
giorno/mese/anno), con eventualmente una descrizione "dell'evento"; e
questo lo fai tramite il metodo addMeeting, come nell'esempio.
Mi raccomando, le date in ordine crescente (dalla piu' vecchia alla piu'
recente). Tecnicamente potevo ordinarle anche da codice, ma dato che le
aggiungi tu manualmente, evitiamo un passaggio in piu'.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Ci siamo fatti una scopata cosi' eccezionale che anche i vicini hanno 
fumato una sigaretta.

 sotto.
Insomma una vera fortuna per me! ;o))
Ora lo provo e poi ti faccio sapere!
Grazie millissime!!!!


 Ora lo provo e poi ti faccio sapere!
Ho provato subito .. solo che nella pagina dove dovrebbe apparire ... esce
la linea di color chiaro,come hai impostato lo sfondo, però mi esce la
scritta "undefined" anzichè la descrizione che doveva apparire .. com'è??
Invece se carico quello con l'esempio fatto da te mi esce solo una linea
chiara.
Per curiosità tu l'avevi provato e ti funzionava? oppure non l'hai
testato? tanto per capire se è solo un problema mio!
grazie 


 testato? tanto per capire se è solo un problema mio!
Il codice l'avevo provato, quindi probabilmente devi riallineare le righe
di codice che sono andate a capo automaticamente quando te lo postato sul
NG, per via del wordwrap.
Se hai qualche problema a riallinearlo correttamente, posso inviartelo per
mail (se e' corretta quella della tua intestazione).
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Una mente perversa e' un peccato sprecarla.
(A dirty mind is a terrible thing to waste)

 mail (se e' corretta quella della tua intestazione).
Mi faresti un gran favore ... puoi inviare a 26agosto chiocciola 
libero.it


 Mi faresti un gran favore ... puoi inviare a 26agosto chiocciola 
libero.it
Dimenticavo .... Grazie!!!


 Dimenticavo .... Grazie!!!
Di niente, figurati..
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Le donne si dividono in 4 categorie: le suore (non la danno a nessuno);
le puttane (la danno a tutti); le stronze (la danno a tutti tranne che 
a te); le rompiballe (la danno a te e solo a te).

 Di niente, figurati..
E se si chiamava *Alceo*, *Astolfo*, o *Arturo* ?  ^__-
{[( Non ho resistito )]}
-- 
Ciao  [dalla USBpen]
  [web]  
www.gfcarlotti.it
 
    [mail]  text welcome in Reply-To
      [pgp]  
www.gfcarlotti.it/pgp/franco.asc

 
Gia', me lo chiedevo anch'io
Dopo la pausa pranzo, a panza piena, invece d bersi il caffe' fumarsi la 
cicca e filosofeggiare sul perche' dell'Universo finche' lo stomaco non 
da' di nuovo semaforo verde... questo tira giu' 'ste robe per la gentil 
pulzella... :-))
Aveva ragione Luigi... e guarda caso il thread manca della replica di 
qualcuno... uno a caso!
:-P
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
  ---- Bring Your Site To Life!!!!
http://www.wmtools.it
 ---- WebMasterTools - Servizi per il tuo sito
http://www.dev2dev.it
 ---- La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli i PUNTO .

:-P
A parte che mi sfugge quel che intendi con "il thread manca della replica
di qualcuno", perche' citi solo Luigi? Ti sei dimenticato i miei post a
riguardo sulle "utentesse"? :)
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Non esistono donne brutte. Dipende solo da quanta vodka bevi.
(proverbio russo)

 E se si chiamava *Alceo*, *Astolfo*, o *Arturo* ?  ^__-
Invece dei due punti finali, probabilmente avrei messo un singolo punto. Ma
il resto del discorso sarebbe rimasto invariato. :)
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Alcune persone sono ancora vive per il semplice motivo che e' 
illegale ucciderle.

 riguardo sulle "utentesse"? :)
Non ce l'ho in archivio, forse risala a mesi che non ho seguito.
