- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- testo a comparsa
-
comunque resta il problema di automatizzare il fatto che quando clicchi scopare il div visualizzato e appare quello nuovo
-
Se parlavi del menù è piuttosto facile, basta che ti salvi in una variabile il div che hai allargato (vecchioDiv) e la relativa voce del menu (vecchioMenu), e quando ne allarghi un altro lo fai scomparire
ti posto il codice
<html> <script language="JavaScript"> <!-- var vecchioMenu; var vecchioDiv; vecchioMenu = ''; vecchioDiv = ''; function mostraNascondi(idTesto) { if(document.getElementById('testo' + idTesto).style.display == 'none') { if(vecchioMenu != '') vecchioMenu.innerHTML = '+ Mostra'; if(vecchioDiv != '') vecchioDiv.style.display='none'; document.getElementById('testo' + idTesto).style.display=''; document.getElementById('ciccio' + idTesto).innerHTML = "- Nascondi"; vecchioMenu = document.getElementById('ciccio' + idTesto); vecchioDiv = document.getElementById('testo' + idTesto); } else { document.getElementById('testo' + idTesto).style.display='none'; document.getElementById('ciccio' + idTesto).innerHTML = "+ Mostra"; vecchioMenu = ''; vecchioDiv = ''; } } //--> </script> <body> Prima parte: <a id="ciccio1" href="javascript:mostraNascondi('1');">+ Mostra</a><br> <br /><div id="testo1" style="display: none; border: 1px solid;">Questo è il testo del primo Div </div> Seconda Parte: <a id="ciccio2" href="javascript:mostraNascondi('2');">+ Mostra</a><br> <br /><div id="testo2" style="display: none; border: 1px solid;">Questo è il testo del secondo Div </div> </body> </html>
-
ok, per far in modo che di defaulti mi mostra il primo id?
-
ho visto che utilizzando i frame funziona lo stesso impostando il target al link, nonostante gli stessi link sono presenti su tutte e due i frame non si impalla.
C'è un problema però cliccando due volte sullo stesso link appare/scompare
-
Se non vuoi che scompaia al secondo click devi levare la parte di javascript che stà nell "else"
Se vuoi che il primo div compaia basta che invece di dargli display:none gli dai display:block e il resto funziona uguale.
ah... dimenticavo, se vuoi che il primo div sia visibile devi anche sostituire all'inizio del codice javascript questo:
vecchioDiv = '';
con questo: (al posto di 'idDelPrimoDiv' ci và l'id del primo div
vecchioDiv = document.getElementById('idDelPrimoDiv');
-
il problema è che i div vengono generati da un ciclo
-
Se il ciclo è di tipo For allora basta che metti un istruzione condizionale
if (indiceDelCiclo = 1) -> display:block;
altrimenti ti crei una variabile boleana prima di iniziare il ciclo
blPrimo = true
e dentro il ciclo fai il controllo:
if blPrimo -> diplay:block + blPrimo = false
in modo che scatta solo la prima volta.
Se all'inizio della pagina non sai il nome del primo div allora dentro quell'istruzione condizionale salvati su una stringa il nome del primo div, tipo "sPrimoDiv"
e alla fine della pagina html (ma prima del tag di chiusura) metti
<script type="text/javascript">
vecchioDiv = document.getElementById('<%=sPrimoDiv%>');
</script>ovviamente riadattando la sintassi alla tecnologia ed al linguaggio che stai utilizzando.
-
fare invece una funzione js che richiamo sul body con onload che mi richiama la funzione per mostrare il div
anche perchè credo che poi non si setti la variabile che ti permette di nascondere il div mostrato nei link successivi
-
Non ti ho suggerito quello perché quando costruisci il <body> della pagina ancora non conosci il nome del div (ma lo conosci solo dopo che cicli sugli elementi)
Il codice che ti ho postato (quello da mettere a fine pagina) serve a posta per inizializzare la variabile e mantenera il funzionamento del codice.
Se percaso già all'altezza del tag <body> conosci il nome del div ti basta mettere nell'onload "mostraNascondi('nomeDelDiv');"
ma io spesso ho avuto problemi con l'evento onload (a volte mi scatta prima che la pagina sia stata costruita interamente e quindi javascript non và).
Semmai fai un tentativo.
-
come pensavo con l'IF nel ciclo non setta la variabile vecchio div e di conseguenza gli altri div si sovrappongo, il primo div nonn scompare mai
-
@SeraphimFoA said:
e alla fine della pagina html (ma prima del tag di chiusura) metti
<script type="text/javascript">
vecchioDiv = document.getElementById('<%=sPrimoDiv%>');
</script>ovviamente riadattando la sintassi alla tecnologia ed al linguaggio che stai utilizzando.
Questa riga di codice serve proprio a settare vecchioDiv... se l'hai già messa controlla che abbia valorizzato bene la stringa sPrimoDiv
( metti un paio di alert nelle righe successive a quella:<script type="text/javascript"> vecchioDiv = document.getElementById('<%=sPrimoDiv%>'); alert(vecchioDiv); alert('<%=sPrimoDiv%>); </script>
e controlla che il primo alert ti dica [object] ed il secondo ti dia il nome del primo div
-
si ma se il ciclo si trova all'interno di una pagina lo script alla fine si setterà con l'ultimo div
-
Non se la variabile sPrimoDiv la valorizzi all'interno dell If che usi per far comparire solo il primo
if (indiceDelCiclo = 1)
sPrimoDiv = "nomeDelDiv"
div display:blockend if
-
Ok così funziona, volendo utilizzare la stessa funzione per far apparire un div con posizionamento assoluto:
.popup {
position: absolute;
display: none;
width: 400px;
height: 300px;
top:300px;
left:50px;
background-color: #FFFFFF;
border: 1px solid #C10818;
padding: 10px;
z-index:3;
}
-
devo dire che questo menù funziona veramente bene però mi sono imbattuto in un problema non da poco ovvero come posso impostare una variabile che mi riporta il menù con il div visualizzato della pagina precedente quando apro una nuova pagina???xxx
-
@makeart said:
devo dire che questo menù funziona veramente bene però mi sono imbattuto in un problema non da poco ovvero come posso impostare una variabile che mi riporta il menù con il div visualizzato della pagina precedente quando apro una nuova pagina???xxx
Via js questo è impossibile. Puoi farlo solo lato server (almeno se vuoi farlo in modo decente).
Per un motivo molto semplice. Il javascript, essendo lato client, si resetta nel caso in cui ricarichi o cambi pagina. Tutte le variabili settate in precedenza scompaiono e ritorna tutto nello stato originario.
Ciao
-
ok, ho inserito nel tag body onload="javascript:mostraNascondi($div)"
e valorizzando questa variabile mi reimposta il div giusto adesso però come faccio a valorizzarla attraverso la funzione stessa che mi visualizza il div