• User Attivo

    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.


  • Super User

    Ciao 🙂

    Premetto che senza vedere il codice è tutto difficile (anzi spesso lo è anche vedendolo :D).

    Comunque se fai un semplice copia e incolla è normale che non funzioni.
    Perchè ci saranno funzioni, variabili e elementi con lo stesso nome. Devi provare a differenziare tutti i nomi.

    Vedendo il codice potrei capire altro.


  • User Attivo

    Grazie per la risposta.
    Ti quoto il js

    <quote>

    /* CONFIG /
    menuClassName = "menuNavigazione";
    /
    SCRIPT /
    function closeSub(menu) {
    for (var i=0; i<menu.childNodes.length; i++)
    if (menu.childNodes
    .nodeName.toLowerCase()=="li") {
    li = menu.childNodes*;
    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_
    .className==menuClassName) closeSub(tags_);
    if(tags_ = document.getElementsByTagName('ol'))
    for(i=0; i<tags_.length; i++)
    if (tags_
    .className==menuClassName) closeSub(tags_*);
    }

    </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.