se però inserisco più di 16 div tra quelli da mostrare e nascondere non funziona e non mi fa vedere nulla.
Come posso fare per far vedere il div che decido io cliccando sul mese o sul giorno del calendario e nascondere quei div che non mi interessano senza impazzire?



Zoff ha scritto:modificare la proprietà display del div in modo da nasconderlo (div.display = 'none') oppure mostrarlo (div.display = 'block').

daemon_nio ha scritto:Zoff ha scritto:modificare la proprietà display del div in modo da nasconderlo (div.display = 'none') oppure mostrarlo (div.display = 'block').
Invece ho trovato più comodo questo:
modificare la proprietà display dell'elemento in modo da nasconderlo (el.display = 'none') oppure mostrarlo (el.display = '').
Il display none funziona per ogni tipo di elemento non solo per i div.
Il display block funziona in maniera diversa su exploere e mozilla. Per i div funziona in ogni caso, ma se poi dovessi cambiare un div con un altro elemento potresti trovare delle difficoltà. Non mettendo nulla nel display ottieni il valore di default, ossia l'elemento viene visualizzato sempre e comunque, sia che si un div, sia un tr, td, etc...


function nascondidata(div){
var evento = new Date(); //In Evento c'è la data attuale
for (i=1;i<32;i++){
//evento.getDate() restituisce il numero del giorno del mese come vedi nella documentazione.
//NB. Io ho messo +10 per mostrarlo per 10gg ma è ovvio che non funziona bene
// perché non tiene conto del cambio di mese, è solo come esempio
if(evento.getDate() >= i && evento.getDate() <= i+10){
id='evento'+i;
document.getElementById(id).style.display = 'none';
}
}
document.getElementById('evento'+div).style.display = 'block';
oDiv = document.getElementById('evento31');
oDiv.style.display='none';
}
tempestaluna ha scritto:mettendolo così potrebbe funzionare?:
function nascondidata(div){
var evento = new Date(); //In Evento c'è la data attuale
document.write(d.getUTCMonth());
for (i=1;i<32;i++){
//evento.getDate() restituisce il numero del giorno del mese come vedi nella documentazione.
//NB. Io ho messo +10 per mostrarlo per 10gg ma è ovvio che non funziona bene
// perché non tiene conto del cambio di mese, è solo come esempio
if(evento.getDate() >= i && evento.getDate() < i+10){
id='evento'+i;
document.getElementById(id).style.display = 'none';
}
}
document.getElementById('evento'+div).style.display = 'block';
oDiv = document.getElementById('evento31');
oDiv.style.display='none';
}

tempestaluna ha scritto:inserendo: evento.setUTCFullYear(2009); non faccio il controllo sull'anno?
inserendo: evento.setUTCMonth(0); non faccio il controllo sul mese?
<script type="text/javascript"><!--
/* Questa funzione restituisce true se il giorno indicato
è maggiore uguale all'ora attuale per non piu' del valore di durata
es. "ipotizzando" che sia il 05/01/2009
isTimeToShow('10','01','2009','20') --> true
isTimeToShow('26','01','2009','20') --> false
isTimeToShow('05','02','2009','40') --> true
*/
function isTimeToShow(gg,mm,aaaa,durata){
var giorniPerMese = new Array( '31','28','31','30','31','30','31','31','30','31','30','31');
endDay = parseInt(gg)+parseInt(durata);
endMonth = parseInt(mm);
endYear = parseInt(aaaa);
while( endDay > giorniPerMese[endMonth -1] ){
endDay -= giorniPerMese[endMonth -1];
endMonth++;
if(endMonth > 12){
endMonth = 1;
endYear++;
}
}
var end = Date.parse(endDay +'/'+ endMonth +'/'+ endYear);
var start = Date.parse(gg+'/'+mm+'/'+aaaa);
var now = new Date().getTime();
return (start < now && now < end);
}
--></script>
tempestaluna ha scritto:ho messo così ma non funziona:
function isTimeToShow(gg,mm,aaaa,durata){
var giorniPerMese = new Array( '31','28','31','30','31','30','31','31','30','31','30','31');
endDay = parseInt(gg)+parseInt(durata);
endMonth = parseInt(mm);
endYear = parseInt(aaaa);
while( endDay > giorniPerMese[endMonth -1] ){
endDay -= giorniPerMese[endMonth -1];
endMonth++;
if(endMonth > 12){
endMonth = 1;
endYear++;
}
}
var end = Date.parse(endDay +'/'+ endMonth +'/'+ endYear);
var start = Date.parse(gg+'/'+mm+'/'+aaaa);
var now = new Date().getTime();
return (start < now && now < end);
}
if( isTimeToShow(05,1,2009,10) )
for (i=1;i<32;i++){
//evento.getDate() restituisce il numero del giorno del mese come vedi nella documentazione.
//NB. Io ho messo +10 per mostrarlo per 10gg ma è ovvio che non funziona bene
// perché non tiene conto del cambio di mese, è solo come esempio
//L'if va messo quì
id='evento'+i;
document.getElementById(id).style.display = 'none';
}
}
document.getElementById('evento'+div).style.display = 'block';
oDiv = document.getElementById('evento32');
oDiv.style.display='none';
}
questo è il controllo che fa sui livelli (in questo caso inizialmente nascosti) for (i=1;i<32;i++) ma non capisco che devo fare e dove mettere il codice che mi hai dato tu
if( isTimeToShow(i,evento.getMonth()+1,evento.getYear(), <durata evento>) ){
tempestaluna ha scritto:così può andare?
function isTimeToShow(gg,mm,aaaa,durata){
var giorniPerMese = new Array( '31','28','31','30','31','30','31','31','30','31','30','31');
endDay = parseInt(gg)+parseInt(durata);
endMonth = parseInt(mm);
endYear = parseInt(aaaa);
while( endDay > giorniPerMese[endMonth -1] ){
endDay -= giorniPerMese[endMonth -1];
endMonth++;
if(endMonth > 12){
endMonth = 1;
endYear++;
}
}
var end = Date.parse(endDay +'/'+ endMonth +'/'+ endYear);
var start = Date.parse(gg+'/'+mm+'/'+aaaa);
var now = new Date().getTime();
return (start < now && now < end);
}
for (i=1;i<32;i++){
if( isTimeToShow(i,evento.getMonth()+1,evento.getYear(), <10>) ){
id='evento'+i;
document.getElementById(id).style.display = 'none';
}
}
document.getElementById('evento'+div).style.display = 'block';
oDiv = document.getElementById('evento32');
oDiv.style.display='none';
}


Visualizzano questa pagina: Andreahma, djluka89, ele_girasole e 2 ospiti