Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106

    Comandare i DIV tramite script

    Salve a tutti, sono alle prime armi con gli script dopo un po di tempo di HTML statico, mi sono deciso a far ricominciare a girare le rotelle del cervello...
    Volevo sapere se qualcuno può aiutarmi ; in pratica ho bisogno di capire la procedura di unione tra i div e i comportamenti in javascript, ovvero capire come cambiare lo stato da hidden a visible di un livello collegandolo ad un azione del mouse (onpress); non ho trovato un granchè se qualcuno può darmi una mano...
    Grazie anticipatamente
    Davide
    Il sapere appartiene al mondo

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Il procedimento è sempre uguale ed è più o meno questo

    1) i div possono essere oggetto di azioni Js solo dopo che questi sono stati caricati, quindi all'evento che desideri (onclick, onouseover...) richiami una funzione che si trova nell'header.


    2) associa un id al tuo div, i.e.

    codice:
    <div id="mioid">
      Sono proprio un bel div!
    </div>
    Associ l'evento a un link
    codice:
    <a href="#" onclick="handle_div('mioid')">
    Mostra/nascondi il div
    </a>
    </div>
    e come detto prima scrivi la funzione sull'header.
    Per creare un riferimento ad un elemento dato il suo
    id si usa il metodo .getElementById()
    (Attenzione a maiuscole e minuscole !!!!!)

    codice:
    <script type="text/javascript">
    function handle_div(id_div_to_handle) {
      ref = document.getElementById(id_div_to_handle);
      
      if (ref.style.display  == 'none') {
        ref.style.display = 'block';
      }
      else {
        ref.style.display = 'none';
      }
    }
    </script>
    La funzione crea un riferimento al div, dopodichè controllo
    la proprietà display (che fa parte dello style). Se questo è invisibile lo mostra altrimenti lo nasconde.

    todo claro??
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    Proprio quello che volevo!!! GRAZIE!.
    Alcune curiosità
    Quando in una stessa parte di una pagina sovrappongo più div della stessa grandezza che devono essere resi visivili tramite questa funzione, i div devono essere nidificati, o aperti e chiusi singolarmente cosi?
    <div>Primo Div</div>
    <div>Secondo Div</div>
    <div>Terzo Div</div>
    <div>Quarto Div</div>
    <div>Quinto Div</div>

    o così?

    <div>Primo Div
    <div>Secondo Div
    <div>Terzo Div
    <div>Quarto Div
    <div>Quinto Div</div></div></div></div></div>
    tramite z-index, conda in visualizzazione il più alto o visto che con lo script cambio lo stato da hidden a visible non è importante?
    Grazie anticipatamente
    Davide
    Il sapere appartiene al mondo

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    un altro problema, quando lo scipt parte, parte con il div visibile, con lo script si nasconde, vorrei partire con il div nascosto, ma dando lo style=" visibility: Hidden" al div non funziona, ho provato a cambiare lo script da:
    if (ref.style.display == 'none') {
    a
    if (ref.style.display == 'hidden') {
    e succede che il div non ricompare più dopo la prima volta che premo sul link.
    Come posso modificarlo?
    Un ultima cosa: per evitare che il link una volta che il div non è più visibile prenda la posizione del div, cioè si sposta, do al div la posizione assoluta con le coordinate?
    Grazie Anticipatamente
    Davide
    Il sapere appartiene al mondo

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    allora, per il posizionamento ho risolto, il problema adesso è che ho bisogno di uno script diverso e ora ti spiego il perchè:

    <html>

    <head>
    <title>Div comandati</title>
    <script type="text/javascript">
    function handle_div(id_div_to_handle) {
    ref = document.getElementById(id_div_to_handle);

    if (ref.style.display == 'none') {
    ref.style.display = 'block';
    }
    else {
    ref.style.display = 'none';
    }
    }
    </script>

    </head>

    <body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">


    </p>
    <div style="width:187px; height:40px; position:absolute; left:443px; top:48px; z-index:1; visibility:visible;" id="mioid">
    Sono proprio un bel div!
    </div>
    <div style="width:187px; height:40px; position:absolute; left:443px; top:48px; z-index:1; visibility:visible;" id="mioid2">
    div 2!
    </div>
    <div style="width:187px; height:40px; position:absolute; left:443px; top:47px; z-index:1; visibility:visible;" id="mioid3">
    div 3!
    </div>

    <div style="position:absolute; z-index:1; left: 200 px;">
    <a href="#" onclick="handle_div('mioid')"></div>
    Mostra/nascondi il div
    </a>
    <div>
    <div style="position:absolute; z-index:1; left: 200 px;">
    <a href="#" onclick="handle_div('mioid2')"></div>
    Mostra/nascondi il div
    </a>
    <div>
    <div style="position:absolute; z-index:1; left: 200 px;">
    <a href="#" onclick="handle_div('mioid3')"></div>
    Mostra/nascondi il div
    </a>
    <div>
    </body>

    </html>
    se copi questa pagina capirai qual'è il problema, il problema, oltre al fatto che il div visibile all'apertura della pagina dovrebbe essere uno solo al massimo (ma preferirei partire proprio senza nessuna visualizzazione), sta nel fatto che se clicco sul link per rendere visibile un div, e non riclicco per farlo scomparire, e passo a un altro link, questo si sovrappone e quello precedente rimane visibile, ci vorrebbe uno script che disabiliti la visibilità degli altri div ogni volta che uno è visibile, forse bisognerebbe creare un array?
    Grazie anticipatamente
    Davide
    Il sapere appartiene al mondo

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    perche' setti la visibility per poi cambiare il display?
    cmq, l' array puoi anche non crearlo, se usi un numero crescente nel nome dei div, x es.
    codice:
    <script type="text/javascript">
    function handle_div(n) {
    	var totalDivs=3;
    	for(var k=0;k<totalDivs;k++){
    		var ref = document.getElementById('mioid'+k);
    		if(k!=n) ref.style.display='none';
    		else ref.style.display=(ref.style.display=='none')?'block':'none';
    	}
    	return false
    }
    </script>
    dove i div sono
    codice:
    <div style="width:187px; height:40px; position:absolute; left:443px; top:48px; z-index:1; display:none;" id="mioid0">
    Sono proprio un bel div!
    </div>
    <div style="width:187px; height:40px; position:absolute; left:443px; top:48px; z-index:1; display:none;" id="mioid1">
    div 2!
    </div>
    <div style="width:187px; height:40px; position:absolute; left:443px; top:47px; z-index:1; display:none;" id="mioid2">
    div 3!
    </div>
    e i link
    codice:
    <a href="#" onclick="return handle_div(0)">
    Mostra/nascondi il div
    </a>
    <a href="#" onclick="return handle_div(1)">
    Mostra/nascondi il div
    </a>
    <a href="#" onclick="return handle_div(2)">
    Mostra/nascondi il div
    </a>
    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    perfetto, funziona cosi come me lo ero sognato!!!!!
    Sei un grande!!! (potrebbe diventare una pillola?)
    Alla prossima.
    Davide
    Il sapere appartiene al mondo

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    Un ultima cosa: se volessi fare in modo che gli eventi vengano gestiti tramite onMouseOver e onMousOut, cioè con onMouseOver si attiva il livello (questo l'ho già provato), e appena esco fuori dal link scompaia di nuovo, a cosa devo collegare onMouseout? devo richiamare un'altro script o modificare quello precedente?
    Grazie anticipatamente
    Il sapere appartiene al mondo

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    ho risolto creando questo altro script e collegandolo all'evento onMouseOut:

    <script type="text/javascript">
    function handle2_div(n) {
    var totalDivs=3;
    for(var k=0;k<totalDivs;k++){
    var ref = document.getElementById('mioid'+k);
    ref.style.display='none'; }
    }
    </script>
    Credi che vada bene o c'è una soluzione meno "spartana"?
    Grazie anticipatamente
    Davide
    Il sapere appartiene al mondo

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    così va più che bene.
    ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.