Newsgroup: it.comp.lang.javascript
Titolo: Problemi di compatibilita'

Premetto che non conosco il javascript ma, programmando in java, la
conoscenza di poche classi e metodi mi ha permesso di partorire il
seguente piccolo script.
Il problema e' che con Netscape non funziona. Problema ordinario, direte
voi, non tanto, dico io, perche' non mi risulta di averci messo nessun
*comando* sconosciuto al Net.
posto il codice:
<script language="JavaScript">
<!-- 
// booleani:
// 0 = false;
// 1 = true;
var date = new Date();
var bise = 0;	// *booleano* (if bisestile)
var years;	// intero (anni passati)
var months;	// intero (mesi passati)
var days;	// intero (giorni passati)
// calcola i giorni a partire dal 21-03-2001
function calcDays() {
	days  = date.getDate();
	month = date.getMonth()+1;
	year  = date.getYear();
	// verifica se siamo nel 2001, se lo siamo fa iniziare il calcolo dei
	// gorni da aprile e ci aggiunge i 10 giorni di marzo, se non lo siamo
	// fa partire il calcolo dal 2002 e ci aggiunge i 285 giorni del 2001
	if ((year-2001)==0) {
		years = 0;
		months = month-3;
		days += 10;
	} else {
		years = (year-2002);
		months = month;
		days += 285;
	}
	// ogni anno passato (tranne il 2001 e il corrente) viene analizzato
per verificare
	// se è bisestile, se lo è vengono aggiunti 366 giorni, altrimenti 365
	for (i=1;i<=years;i++) {
		bise = 0;
		c = year-i;
		for (j=500;j<(year/4);j++) {
			if ((c/4)==j) {
				bise = 1;
				break;
			}
		}
		if (bise==0) {
			days += 365;
		} else {
			days += 366;
		}
	}
 
	// aggiunge mese per mese i giorni che il mese contiene
	for (i=1;i<months;i++) {
		if (i==4 || i==6 || i==9 || i==10) {
			days += 30;
		} else if (i==2) {
			bise = 0;
			for (j=500;j<751;j++) {		// controlla se l'anno è bisestile, vale
fino al 3000
				if ((year/4)==j) {
					bise = 1;
					break;
				}
			}
			if (bise==0) {
				days += 28;
			} else {
				days += 29;
			}
		} else {
			days += 31;
		}
	}
 
document.write(days);
}
-->
</script>
Ringrazio chiunque perda un po' del suo tempo analizzando il mio
problema,
Nihil

 problema,
Prova ad utilizzare il metodo getFullYear() invece di getYear()
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
              All the JavaScript you need
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

 Prova ad utilizzare il metodo getFullYear() invece di getYear()
No, niente da fare... :-(
grazie cmq, altri suggerimenti?
Nihil

Il Wed, 18 Apr 2001 11:50:17 +0200, Nihil ha scritto.....

Ho provato lo script.
Qual'è il problema? Non ti stampa il risultato o non ti da il risultato esatto?
Per il secondo caso ho risolto in Netscape usando getFullYear().
Per il primo: sei sicuro che abbia senso fare document.write()?
Prova a fare alert(days) e controlla se il risultato è quallo che ti aspetti.
Dopodiche il tuo problema sta sicuramente proprio nel document.write.
Io l'ho provato facendo scattare la funzione con <BODY onLoad="calcDays()">
Se il tuo caso è simile (a documento caricato esegui la funzione) Netscape si 
rifiuta (giustamente) di stampare qualcosa dato che il documento è già finito.
Se il risultato ti serve visualizzato nella pagina, allora prendi lo script, 
togli "function calcDays() { " e la "}" di chiusura della funzione e mettilo 
nel sorgente del documento al posto giusto.
Io l'ho messo così:
<BODY>
<TABLE><TR><TD>
<SCRIPT>
. . . 
. . (tutto lo script) . . .
. . .
document.write(days);
. . .
</SCRIPT>
</TD><TR></TABLE>
</BODY>
e funziona regolarmente.


 Io l'ho messo così:
[cut]
Innanzi tutto, perdonami per il ritardo della risposta.
Ho provato a fare come mi hai detto ma è come se NN si rifiutasse di
eseguire lo script (ho provato anche a inserire un
*document.write("ciao");* all'inizio dello script ma niente, invece se
lo inserisco all'interno di altri tag <script> tutto ok, e vorrei
vedere...)
Heelp!!

Retreat!!!
Tutto risolto. Era colpa di un *>* inserito in un commento senza farci
caso: IE sorvolava, NN no!
Grazie cmq, mi sei stato molto utile;
Nihil