Visualizzazione dei risultati da 1 a 10 su 10

Discussione: menu a scomparsa

  1. #1

    menu a scomparsa

    Salve a tutti, posto per chiedere aiuto nel completamento di un menu a scomparsa che ho realizzato.
    Il menu basa il funzionamento su di un codice js che consente l'apertura e la chiusura del sottomenu.
    Vorrei che il menu sia in entrambi i lati dello schermo, ovvero nelle colonne di destra e di sinistra, ovviamente con diversi contenuti.
    Fino al css non ho problemi, nel senso che creo le due classi per i due lati e tutto va, fino a quando non devo caricare il codice js per le due colonne.
    Se carico il codice per quella di destra non funziona a sinistra e viceversa.
    C'è un modo per caricare i due codici js nella stessa pagina consentendo ad entrambi i menu di funzionare correttamente?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Dovresti postare i codici javascript per poter acconsentire qualcuno di aiutarti!


  3. #3
    Grazie per la risposta.
    Quoto il js

    <quote>

    /* CONFIG */
    menuClassName = "menuNavigazione";
    /* SCRIPT */
    function closeSub(menu) {
    for (var i=0; i<menu.childNodes.length; i++)
    if (menu.childNodes[i].nodeName.toLowerCase()=="li") {
    li = menu.childNodes[i];
    li.onmouseover = li.onactivate = li.onfocus = function() { if (this.subMenu) this.subMenu.className = this.subMenu.className.replace(/subMenu-off/g,"subMenu-on") };
    li.onmouseout = li.ondeactivate = li.onblur = function() { if (this.subMenu) closeSub(this.subMenu) };
    for (j=0; j<li.childNodes.length; j++)
    if (li.childNodes[j].nodeName.toLowerCase()=="ul" || li.childNodes[j].nodeName.toLowerCase()=="ol") closeSub(li.subMenu = li.childNodes[j]);
    }
    menu.className = menu.className.replace(/\s?subMenu-on/g,"")+" subMenu-off";
    }
    /* ON LOAD */
    window.onload = function(e) {
    if(tags_ = document.getElementsByTagName('ul'))
    for(i=0; i<tags_.length; i++)
    if (tags_[i].className==menuClassName) closeSub(tags_[i]);
    if(tags_ = document.getElementsByTagName('ol'))
    for(i=0; i<tags_.length; i++)
    if (tags_[i].className==menuClassName) closeSub(tags_[i]);
    }

    </quote>

    I due menu li ho chiamati, per semplicità, menudinavigazione e menudinavigazioned.
    Chiamando i due js onfocus e onfocusd.
    Nel primo, come puoi vedere la classe è menudunavigazione; nel secondo l'altro.
    Il punto è che caricandoli funzionano entrambi, ma separatamente, ovvero il secondo caricato annulla il primo.
    Quando do il comando
    <script type="text/javascript" src="stili/onfocus.js"></script>
    e
    <script type="text/javascript" src="stili/onfocusd.js"></script>

    mi funziona solo il menu di destra, se non inserisco la seconda stringa funziona ovviamente solo quello di sinistra.
    Dovrei riuscire a modificare il js in modo da far funzionare entrambi o a dare le due stinghe senza che l'una annulli l'altra.
    Non so se sono riuscito a spiegarmi.
    Grazie.

  4. #4
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Originariamente inviato da Igreo
    Dovresti postare i codici javascript per poter consentire qualcuno di aiutarti!

    Ops, ho premuto involontariamente il quote, visto che c'era un errore nella risposta e volevo modificarla.. eheh!;D

    Cmq, il tuo codice credo sia un pò difficilotto per me...

    Ma, a prima visto il problema potrebbe essere quello che le tue variabili hanno nomi identici e quindi vengono caricati soltanto per un js... prova a cambiare il nome delle variabili per ogni js.

    Ciao.

  5. #5
    Se per variabili intendi
    menuClassName = "menuNavigazione";

    nei due file le variabili erano questa e
    menuClassName = "menuNavigazioned";

    Il punto è che caricando i due file separatamente il singolo menu funziona bene. Il problema sorge quando li carico nella stessa pagina per far funzionare contemporaneamente i menu, per cui il secondo javascript caricato mi annulla il primo e funziona solo un menu.
    Quello che vorrei è caricare entrambi i file senza che si annullino a vicenda, o modificare il js in modo che faccia funzionare entrambe le variabili.

    Spero di essere riuscito a spiegarmi meglio.

    Grazie.
    www.ryujokan.it

  6. #6
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    /* CONFIG */
    menuClassName = "menuNavigazione";
    /* SCRIPT */
    function closeSub(menu) {
    for (var i=0; i<menu.childNodes.length; i++)
    if (menu.childNodes[i].nodeName.toLowerCase()=="li") {
    li = menu.childNodes[i];
    li.onmouseover = li.onactivate = li.onfocus = function() { if (this.subMenu) this.subMenu.className = this.subMenu.className.replace(/subMenu-off/g,"subMenu-on") };
    li.onmouseout = li.ondeactivate = li.onblur = function() { if (this.subMenu) closeSub(this.subMenu) };
    for (j=0; j<li.childNodes.length; j++)
    if (li.childNodes[j].nodeName.toLowerCase()=="ul" || li.childNodes[j].nodeName.toLowerCase()=="ol") closeSub(li.subMenu = li.childNodes[j]);
    }
    menu.className = menu.className.replace(/\s?subMenu-on/g,"")+" subMenu-off";
    }
    /* ON LOAD */
    window.onload = function(e) {
    if(tags_ = document.getElementsByTagName('ul'))
    for(i=0; i<tags_.length; i++)
    if (tags_[i].className==menuClassName) closeSub(tags_[i]);
    if(tags_ = document.getElementsByTagName('ol'))
    for(i=0; i<tags_.length; i++)
    if (tags_[i].className==menuClassName) closeSub(tags_[i]);
    }



    _Perlomeno sarebbe l'unico motivo che a prima vista potrebbe venire in mente.. per il restom non so cosa dirti!

    Ciao

  7. #7
    Ti ringrazio per le note al js, ma credo che il problema non sia quello, anche se le mie conoscenze in merito sono 0.
    Come ho scritto il menu funziona bene se preso singolarmente per ciscuna classe, il problema sorge se cerco di farli funzionare entrambi. Dovrei trovare il modo di definire entrambe le classi in un solo js, o caricare i due js nella pagina in modo che non si annullino a vicenda.
    Più tardi metto in rete la prova dei menu, così potrebbe essere più semplice da capire.
    www.ryujokan.it

  8. #8
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Io invece credo che il problema sia proprio che devi dare il nome delle variabili diverse...

    In un js la variabile li, la chiami ugualmente, nell'altro invece la chiami lo.

    Perchè quando il browser carica i js, non capisce a quale variabile deve fare riferimento..

    oppure puoi fare in una diversa maniera... provo:


    /* SCRIPT */
    function closeSub(menu) {
    for (var i=0; i<menu.childNodes.length; i++)
    if (menu.childNodes[i].nodeName.toLowerCase()=="li") {
    li = menu.childNodes[i];
    li.onmouseover = li.onactivate = li.onfocus = function() { if (this.subMenu) this.subMenu.className = this.subMenu.className.replace(/subMenu-off/g,"subMenu-on") };
    li.onmouseout = li.ondeactivate = li.onblur = function() { if (this.subMenu) closeSub(this.subMenu) };
    for (j=0; j<li.childNodes.length; j++)
    if (li.childNodes[j].nodeName.toLowerCase()=="ul" || li.childNodes[j].nodeName.toLowerCase()=="ol") closeSub(li.subMenu = li.childNodes[j]);
    }
    menu.className = menu.className.replace(/\s?subMenu-on/g,"")+" subMenu-off";
    }
    /* ON LOAD */
    window.onload = function(e) {
    if(tags_ = document.getElementsByTagName('ul'))
    for(i=0; i<tags_.length; i++) {
    if (tags_[i].className=="menuNavigazione") closeSub(tags_[i]);
    else (tags_[i].className=="menuNavigazioned") closeSub(tags_[i]);

    }
    if(tags_ = document.getElementsByTagName('ol'))
    for(i=0; i<tags_.length; i++) {
    if (tags_[i].className=="menuNavigazione") closeSub(tags_[i]);
    else (tags_[i].className=="menuNavigazioned") closeSub(tags_[i]);

    }
    }



  9. #9
    Il codice che mi hai dato ha funzionato quasi alla perfezione.
    questa parte

    if (tags_[i].className=="menuNavigazione") closeSub(tags_[i]);
    else (tags_[i].className=="menuNavigazioned") closeSub(tags_[i]);
    }
    if(tags_ = document.getElementsByTagName('ol'))
    for(i=0; i<tags_.length; i++) {
    if (tags_[i].className=="menuNavigazione") closeSub(tags_[i]);
    else (tags_[i].className=="menuNavigazioned") closeSub(tags_[i]);
    }

    l'ho modificata con l'aggiunta di due if ed ha funzionato alla perfezione

    if (tags_[i].className=="menuNavigazione") closeSub(tags_[i]);
    else if (tags_[i].className=="menuNavigazioned") closeSub(tags_[i]);
    }
    if(tags_ = document.getElementsByTagName('ol'))
    for(i=0; i<tags_.length; i++) {
    if (tags_[i].className=="menuNavigazione") closeSub(tags_[i]);
    else if (tags_[i].className=="menuNavigazioned") closeSub(tags_[i]);
    }

    Mi prosterno riverente e ti ringrazio infinitamente
    www.ryujokan.it

  10. #10
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Eh già, mancavano gli if... sorry! Beh, sono felice!^^

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.