• User

    Problema con il javascript

    Salve a tutti, ho una grandissima stima di voi, quindi speriamo
    che riusciate a risolvere il mio problema, che sto odiando, perchè è da stanotte alle 2 che ci sto sopra. 😄

    In poche parole si fa meno che a vederlo, che a dirlo. E purtroppo si può vedere solo se si è loggati, quindi, ho creato un account temporaneo.

    geeknews.it
    Username: X
    Password: qwerty

    In poche parole, vedete che ci sta Inserisci Notizia, Inserisci Immagine?
    ecco ho usato uno speciale effetto di Jquery, ma non riesco quando è aperto già il div di Inserisci notizia, a farlo scomparire quando clicco su Inserisci Immagine, e quindi per aprire il secondo Div.

    In poche parole ci sono due div "postbox" e "postimg", tutti e due "display: none;".

    Ed ho creato due funzioni:

    [html]<script type="text/javascript">

    window.onload = function() {
    myFadeSize = new fx.FadeSize('postbox', {duration: 700});
    myOpacity = new fx.Opacity('postbox', {duration: 700});
    myHeight = new fx.Height('postbox', {duration: 700});
    myF = new fx.FadeSize('postimg', {duration: 700});
    myO = new fx.Opacity('postimg', {duration: 700});
    myH = new fx.Height('postimg', {duration: 700});
    }

    function ApriDiv() {
    if(document.getElementById("postimg").style.opacity=="0.9999" && document.getElementById("postimg").style.visibility=="visible"){
    document.getElementById("postimg").style.opacity=="0";
    document.getElementById("postimg").style.visibility=="hidden";
    } else {
    if(document.getElementById("postbox").style.display=="none"){
    document.getElementById("postbox").style.display="";
    } else {

        myHeight.toggle();
        myOpacity.toggle();
    
    }
    }
    

    }
    function ApriImg() {
    if(document.getElementById("postbox").style.opacity=="0.9999" && document.getElementById("postbox").style.visibility=="visible"){
    document.getElementById("postbox").style.opacity=="0";
    document.getElementById("postbox").style.visibility=="hidden";
    } else {
    if(document.getElementById("postimg").style.display=="none"){
    document.getElementById("postimg").style.display="";

    } else {
    
        myH.toggle();
        myO.toggle();
    
    }
    }
    

    }

    </script>
    [/html]myFadeSize è per aprire il div.
    myOpacity è per oscurarlo.
    myHeight è per per fare tornare il div a 0 height.

    Il problema è che quando ho aperto uno dei due div,
    postbox o postimg, cliccando sull'altro, rimane aperto.
    e quindi si vedono uno sopra l'altro. invece vorrei che si chiudesse.

    Grazie.


  • User

    Ragazzi vi prego! Perdo il lavoro se non riesco a fare questa cosa, stiamo perdendo un sacco di utenti!


  • Super User

    Ciao 🙂
    Innanzitutto ti faccio notare che è bene evitare richieste di questo tipo:
    @GeekNews said:

    Ragazzi vi prego! Perdo il lavoro se non riesco a fare questa cosa, stiamo perdendo un sacco di utenti!
    Per consulenze rapide e di primaria importanza è meglio affidarsi a consulenze professionali e non a richieste nel forum.

    Riguardo all'effetto che vuoi realizzare noto una sovrabbondanza di codice.
    Guarda questo esempio http://docs.jquery.com/Effects/slideDown è davvero molto semplice.
    Basta usare is(":hidden") per aprire o chiudere i div.


  • User

    Ciao ti ringrazio per la risposta, e scusate per il secondo messaggio che ho fatto, cmq sia credo che il problema non cambi. TI faccio capire meglio quello che vorrei:

    nello stesso punto c'è:
    1 codice php per vedere se sei loggato
    2 div postbox con display hidden
    3 div postimg con display hidden

    (quindi sono uno sotto l'altro perchè si deve aprire nello stesso punto).
    Cn un altro effetto, cioè quello che mi hai linkato sopra, sarebbe lo stesso.

    Prova andare sul mio sito, ed entrare con i dati che ti ho scritto.
    E prova a cliccare Prima INserisci Notizia, e poi mentre è aperto su Inserisci Immagine.

    Cme noterai si apriranno uno sotto l'altro. E questo non va bene, perchè uno potrebbe fare due richieste contemporaneamente. Ed il sito si blocca.
    vorrei solo che quando uno è aperto per esempio il div di inserisci notizia, ed apro inserisci immagine, che si chiuda quello prima.

    Spero che tu mi possa aiutare 😞

    Grazie.


  • Super User

    Ma scusa ti basta chiuderli tutti sull'evento onclick.
    Mi spiego con un esempio su due div con id #div1 e #div2.

    Quando clicchi su fai
    $("#div2").hide();
    oppure per completezza aggiungi un controllo

          if ($("#div2").is(":visible")) {
            $("#div2").hide();
          } 
    ```dopodiché apri il , tutto di seguito... qualcosa del genere:
    
        ```
    $(#div1).click(function () {
    // chiude il 2 se è aperto
          if ($("#div2").is(":visible")) {
            $("#div2").hide();
          } 
    //apre l'1 se chiuso
          if ($("#div1").is(":hidden")) {
            $(#div1").slideDown("slow");
          }
    //chiude l'1 se aperto
     else {
            $("#div1").hide();
          }
        });
    
    ```scusa eventuali errori ma non sto testando

  • User

    Ti ringrazio tantissimo, anche se l'effetto non è lo stesso, ma è simile, sono riuscito grazie al tuo aiuto.
    Come puoi vedere da questa pagina html.

    geeknews.it/menu.html

    Grazie 😛


  • Super User

    Sono contento tu abbia risolto, ma sei comunque ufficialmente ammonito.

    Hai violato il regolamento in diversi punti ed abusato anche della funzione "reported post" che serve esclusivamente per avvisare i moderatori di un messaggio scorretto, e quì la scorrettezza l'avevi fatta tu.

    Non ci saranno ulteriori note, alla prossima violazione sarai allontanato dal forum.


  • User

    k, avete ragione, ho già chiesto scusa nel terzo messaggio. Cmq sia, mi sa che non è risolto affatto. Perchè come vedete nel link di prima, se cliccate su una e poi sull'altra ne escono tutti e due.
    Eppure ho seguito la tua guida, mettendo il controllo di quando cliccavo, se era aperto lo chiudevo. Eppure non va...