Salve a tutti
Da poco mi sono messo ad imparare javascript, e in particolare volevo fare un menu a tendina dove la tendina compare non di colpo (cambiando display da 'none' a 'block'), ma in modo che facesse una comparsa graduale cambiando la trasparenza.
Ma lo script non funziona... non so perchè...
Prima faceva una cosa strana che ora non mi ricordo, ora proprio non parte, non fa neanche il primo alert che ho messo...
Ora posto il codice
Stile (Non penso sia importante, ma lo posto lo stesso):
Codice PHP:
<style>
#Contenitore{
position:relative;
}
#Bottone{
background-color:#000099;
color:#FFFFFF;
font-weight:bold;
width:100px;
height:30px;
text-align:center;
}
#Tendina{
background-color:#003300;
color:#FFFFFF;
font-weight:bold;
width:150px;
height:200px;
position:relative;
left:10px;
}
</style>
Script:
Codice PHP:
function tendina(bo){
var tendina = document.getElementById('Tendina'); //Prendo l'oggetto tendina
alert ('Parto');
if(tendina.style.display=='none'){ //Se non è visibile
tendina.style.display='block'; //Diventa visibile
alpha = 0; //Con alpha 0
quantita = 0.1; //Durante l'animazione alpha cambierà di 0.1
tendina.style.opacity = alpha; //Applico alpha=0
alert('Non visibile: lo metto visibile con alpha = '+alpha+'('+tendina.style.opacity+'); Incremento = '+quantita);
}
else{ //Se invece è visibile
alpha = 1;
tendina.style.opacity = alpha;
quantita = -0.1;
alert('Visibile: lo metto visibile con alpha = '+alpha+'('+tendina.style.opacity+'); Incremento = '+quantita);
}
cambia_alpha(alpha,quantita); //Chiamo cambia alpha
}
function cambia_alpha(alpha,quantita){
var tendina = document.getElementById('Tendina');
alpha+=quantita; //Cambio alpha della quantità desiderata
tendina.style.opacity = alpha; //Lo applico
//A volte alpha diventa tipo 0.7000000000000000001, levo questo bug
alpha=alpha*100; //Faccio diventare alpha intero
alpha=parseInt(alpha); //Mi assicuro che sia intero
alpha=alpha/100; //Ritorno alla notazione con 2 decimali
alert('Cambio alpha = '+alpha+'('+tendina.style.opacity')' );
if(alpha>0&&alpha<1){ //Se alpha è compreso tra 0 e 1
setTimeout(cambia_alpha(alpha,quantita),200); //Richiamo questa funzione
alert('Richiamo'+alpha+'('+tendina.style.opacity+')');
}else //Senno basta
alert('Basta');
}
Pagina:
Codice PHP:
<div id="Contenitore">
<div id="Bottone" onClick="tendina()">Bottone</div>
<div id="Tendina">Contenuto della tendina</div>
</div>
Non uso IE e non mi interessa esserne compatibile, almeno per ora
Grazie per la pazienza e la comprensione di una mente contorta come la mia...