#ancora che funziona in parte!

artigiano

Nuovo Utente
4 Mag 2008
4
0
0
Ho utilizzato un script che serve a far aprire una determinata pagina in un determinato punto, eccone una sintesi (quella che interessa il post):
Codice:
<script type="text/javascript" language="JavaScript">
	    function Carica() {
        var now = new Date();
		var hours = now.getHours();
		var ancora = ""; altezza = "";
		if(hours >= 6 && hours < 12){ 
		ancora = "m"; 
		altezza = "350px";
		}else if(hours >= 12 && hours < 18){
		ancora = "p"; 
		altezza = "350px";
		}else if(hours >= 18 && hours < 0){
		ancora = "s"; 
		altezza = "350px";	
        }else if(hours >= 0 && hours < 6){
		ancora = "n"; 
		altezza = "350px";
		}

Le pagine relative presentano il seguente codice
Codice:
<div class="ancora"><a name="m">MATTINA</a></div>
<div id="Mattino">

<div class="ancora"><a name="p">POMERIGGIO</a></div>
    <div id="Pome">

<div class="ancora"><a name="s">SERA</a></div>
      <div id="Sera">

<div class="ancora"><a name="n">NOTTE</a></div>
      <div id="Notte">
che è appunto il punto che dovrebbe apparire all'apertura della pagina.

i CSS relativi sono
Codice:
}
#Mattino{
	width: 650px;
	margin-right: auto;
	margin-left: auto;
}
#Pome{
	width: 650px;
	margin-right: auto;
	margin-left: auto;
}
#Sera{
	width: 650px;
	margin-right: auto;
	margin-left: auto;
}
#Notte{
	width: 650px;
	margin-right: auto;
	margin-left: auto;
}

.ancora{
	font-style: italic;
	height: 20px;
	margin-bottom: 10px;
	width: 650px;
	margin-right: auto;
	margin-left: auto;
	text-align: center;
	margin-top: 10px;
}

Qual'è il problema? :crying:

Che al mattino e al pomeriggio tutto funziona regolarmente, a partire dalle 18, quando dovrebbe scattare la sera, in poi si visualizza solo il mattino e in un formato di frame ridotto rispetto al funzionante.
Qualcuno ne capisce l'arcano?
 
Ciao e benvenuto tra noi :)

L'arcano sta nella condizione della Sera:
else if(hours >= 18 && hours < 0)

La condizione infatti non si verifica mai perchè un numero non può essere maggiore di 18 e nello stesso tempo minore di 0.


Il problema sta tutto li ;)
:byebye:
 
Codice:
if(hours >= 6 && hours < 12){ 
		ancora = "m"; 
		altezza = "350px";
		}else if(hours >= 12 && hours < 18){
		ancora = "p"; 
		altezza = "350px";
		}else if(hours >= 18 && hours < 23){
		ancora = "s"; 
		altezza = "350px";	
        }else if(hours >= 0 && hours < 6){
		ancora = "n"; 
		altezza = "350px";
		}

:confused:
 
come al solito scusate l'intromissione

else if(hours >= 18 && hours <= 23)

farà si che la fase "Sera" sia valida fino alle 23.59, poi dalle ore 0.00 automaticamente inizierà la "Notte".

non vorrei dire una czz, ma secondo me <=23 alle 23.00001 passa a notte, secondo me dovrebbe essere

hours>=18 and hours <24 per cui 23 59' 59.998" minore, mentre 24 0' 0" maggiore
 
...non vorrei dire una czz, ma secondo me <=23 alle 23.00001 passa a notte, secondo me dovrebbe essere

hours>=18 and hours <24 per cui 23 59' 59.998" minore, mentre 24 0' 0" maggiore
No ragazzi, a questo punto non avete capito il concetto di base della faccenda :)

La condizione:
else if(hours >= 18 && hours <= 23)
fa un controllo sul valore di hours.
Bene, la variabile hours non contiene l'ora intera, come per esempio le 23 59' 59.998, ma contiene il valore dell'ora, ovvero ha come valore 23.
Questo lo si deduce da questa riga:
var hours = now.getHours();

Quindi, che siano le 23.01, o le 23.59, hours ha sempre come valore 23.

Ecco spiegato perchè è giusta la condizione che ho postato ieri, che fa si che la condizione si verifichi fino a tutta la durata delle ore 23. Alle ore 0.00, scatterà automaticamente la condizione:
if(hours >= 0 && hours < 6)

Chiaro adesso? :)
 
hai perfettamenta ragione, non mi ero accorto di come veniva inizializzata la variabile, comunque passando da 23 a 0 funziona lo stesso e cosi sembra di non perdere una ora

ciao a tutti
 

Discussioni simili