Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    menu con pagina corrente segnalata via .js

    ciao a tutti...

    non mi ricordo più dove ho trovato questo .js che imposta una certa classe agli elementi <a> all'interno di un elemento con un certo ID quando è aperta la pagina a cui punta ogni <a>...

    vale a dire che in un menu puoi ottenere la segnalazione della pagina corrente...

    relativamente all'esempio che posto sotto: basta inserire gli <a> all'interno di un div di id="navlist", quando sei su pagina_uno.html l'elemento <a href="pagina_uno.html"> riceve class="active"... via css fai il resto...

    codice:
    <script language="javascript" type="text/javascript">
    function setActive() {
      aObj = document.getElementById('navlist').getElementsByTagName('a');
      for(i=0;i<aObj.length;i++) { 
        if(document.location.href.indexOf(aObj[i].href)>=0) {
          aObj[i].className='active';
        }
      }
    }
    window.onload = setActive;
    </script>
    Ecco la domanda:
    se ho un menu come questo
    <ul id="navlist">[*]pagina_1[*]pagina_2[*]pagina_2 beta[*]pagina_3
    [/list]

    quando sono a pagina 02.html l'elemento <a href="02.html"> riceve la classe active
    quando sono invece a pagina 02beta.html la riceve l'elemento <a href="02beta.html">

    è possibile modificare lo script in modo che se sono a pagina 02beta.html riceva la classe active ANCHE l'elemnto <a href="02.html">

    Nel senso: lo script dovrebbe lavorare quando un elemento <a> punta a una pagina che COMINCIA con 02, quindi sia <a href="02.html"> che <a href="02beta.html">...

    spero di essere stato chiaro...

    c'è qualcuno che ha idea di come fare?
    grazie in anticipo
    O saisons, ô châteaux,
    Quelle âme est sans défauts?

    Rimbaud - L'Éternité (1872)

    EsseZeta - VisualWriting | www.essezeta.org

  2. #2
    nessuna suggestione?

    cioè la condizione
    if(document.location.href.indexOf(aObj[i].href)>=0)

    non può essere trasformata in qualcosa del tipo
    if(document.location.href.iPrimiDueCaratteriDiindexOf(aObj[i].href)>=0)

    ecco comunque l'origine dello script inquestione:
    Intelligent Navigation Bars with JavaScript and CSS
    O saisons, ô châteaux,
    Quelle âme est sans défauts?

    Rimbaud - L'Éternité (1872)

    EsseZeta - VisualWriting | www.essezeta.org

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Cambia if di verifica:
    codice:
    if(document.location.href.indexOf(aObj[i].href)>=0)
    con questo if:
    codice:
    if(document.location.href.indexOf(aObj[i].href.substr(aObj[i].href.lastIndexOf("/")+1).substring(0,2))>=0)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    e s a t t a m e n t e quello che chiedevo!!!

    grazie mille, andrea!!
    O saisons, ô châteaux,
    Quelle âme est sans défauts?

    Rimbaud - L'Éternité (1872)

    EsseZeta - VisualWriting | www.essezeta.org

  5. #5
    ...scusate se uppo una richiesta di aiuto a cui ho già ricevuto risposta...
    ma volevo postare il risultato dell'esperimento e chiedere un consiglio...

    Si tratta di un menu con delle sottovoci espandibili al click, in cui la pagina corrente viene segnalata via javascript...

    ecco una DEMO

    per l'highlight delle varie voci di menu ho modificato QUESTO JS con il consiglio di cavicchiandrea nel post precedente, mentre per espandere le sottovoci del menu ho leggermente modificato QUEST'ALTRO JS...

    Premesso che questa soluzione non va bene per qualsiasi tipo di progetto, perché affidare i feedback di navigazione a javascript non è il massimo per tanti motivi... può tornare utile in alcuni casi... (nel mio caso ad es. perché vado a generare dinamicamente dei contenuti in html da fruire in locale e allora non potevo affidarmi ai feedback in php)

    Volevo però chiedere agli esperti di javascript se trovano 5 minuti per dare un'occhiata e spulciare la demo on line per valutare quanto è "solida" come impostazione... in cosa può essere eventualmente ottimizzata... ecc...

    Grazie dell'attenzione...


    O saisons, ô châteaux,
    Quelle âme est sans défauts?

    Rimbaud - L'Éternité (1872)

    EsseZeta - VisualWriting | www.essezeta.org

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.